【发布时间】:2021-09-04 03:42:26
【问题描述】:
当我在 TabView 中添加 NavigationView 时,我在 SwiftUI 项目中看到了一个意外的 UI 问题。
这是我的代码,
struct MainView: View {
@State private var selectedTab: Int = 0
var body: some View {
TabView(selection: $selectedTab) {
NavigationView {
ScrollView {
VStack {
ForEach(0..<30) { i in
Text("Hello World")
.padding()
.frame(minWidth: .zero, maxWidth: .infinity)
}
}
}.background(Color.red)
.navigationTitle("Home View")
}.background(Color.green)
.navigationViewStyle(StackNavigationViewStyle())
.tabItem {
TabItem(title: "Explore", systemImage: selectedTab == 0 ? "house.fill" : "house")
}.tag(1)
ExploreView()
.background(Color.red)
.tabItem {
TabItem(title: "Explore", systemImage: selectedTab == 1 ? "safari.fill" : "safari")
}.tag(1)
}
}
}
这是我的场景委托代码,
struct RootView: View {
var body: some View {
MainView()
}
}
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?
func scene(_ scene: UIScene, willConnectTo _: UISceneSession, options _: UIScene.ConnectionOptions) {
if let windowScene = scene as? UIWindowScene {
let window = UIWindow(windowScene: windowScene)
self.window = window
}
let host = UIHostingController(rootView: RootView())
window?.rootViewController = host
window?.makeKeyAndVisible()
}
}
ScrollView(位于NavigationView 内)的高度没有占据整个屏幕。我尝试了所有技巧(填充,框架,GeometryReader,...),但没有运气。我无法弄清楚我在这里做错了什么,任何帮助将不胜感激。
【问题讨论】:
-
您能否添加更多信息和/或完成代码以使其独立?我自己的快速测试(为非指定视图(如 TabItem)创建基于文本的存根)按预期工作(底部没有间隙)。模拟器版本、设备或任何其他帮助其他人观察问题的东西都会有所帮助。
-
我遇到了这个确切的问题。我在 UIKit 中使用 SwiftUI(在现有项目中)。我尝试了两个建议的答案,但都不适合我:(
标签: ios swiftui swiftui-navigationview swiftui-tabview