添加 TabView 使导航栏无法覆盖 SwiftUI 中的安全区域
Posted
技术标签:
【中文标题】添加 TabView 使导航栏无法覆盖 SwiftUI 中的安全区域【英文标题】:Adding a TabView makes the Navigation Bar not cover the safe area in SwiftUI 【发布时间】:2019-09-30 18:53:50 【问题描述】:在我的 SwiftUI ios 应用中添加 TabView 时,导航栏停止覆盖缺口
我尝试为 TabView 实现创建另一个文件(修改 SceneDeletage 等)
这是一个没有 TabView 的简单代码,它使导航栏覆盖安全区域(也称为缺口)
import SwiftUI
struct ContentView: View
var body: some View
NavigationView
ScrollView
HStack
VStack
ForEach((1...10), id: \.self)_ in
Text("Hello")
.padding(.leading, 20)
Spacer()
//.padding(.leading, 20)
.navigationBarTitle("Title Covers Safe Area")
struct ContentView_Previews: PreviewProvider
static var previews: some View
ContentView()
这是一个带有 TabView 的代码,它使导航栏不会覆盖安全区域
import SwiftUI
struct ContentView: View
var body: some View
TabView
NavigationView
ScrollView
HStack
VStack
ForEach((1...10), id: \.self)_ in
Text("Hello")
Spacer()
.padding(.leading, 20)
.navigationBarTitle("Doesn't Cover Safe Area")
.tabItem
Image(systemName: "1.circle")
Text("First")
.tag(0)
HStack
Spacer()
VStack
Spacer()
Text("Second View")
.font(.system(size: 40))
.tabItem
Image(systemName: "2.circle")
Text("Second")
.tag(1)
struct ContentView_Previews: PreviewProvider
static var previews: some View
ContentView()
【问题讨论】:
两张图说明情况imgur.com/a/ADh46Ek 嘿,我也遇到了同样的问题,你找到解决方法了吗? @KarenKarapetyan 是的,我做到了,我更新了 Xcode 并逐行重写了堆栈,它以某种方式工作 你好,今天我也注意到这个问题在更新xcode后得到修复,SwiftUI越来越好,感谢Erdal的支持。 【参考方案1】:您可以使用方法edgesIgnoringSafeArea(_:)
TabView
...
.edgesIgnoringSafeArea(.top)
【讨论】:
我会检查这个作为答案,但这种方法涉及 Xcode 11A420a 的其他横向问题 这对我不起作用,当我输入.top
时没有任何反应swiftUI 中的错误或我做错了什么
@DivyanshuNegi 如果您已全局修改 NavigationBar 的外观,它将无法工作(例如 UINavigationBar.appearance().backgroundColor = .blue
)
即使在移除全局外观更改后它也不起作用。以上是关于添加 TabView 使导航栏无法覆盖 SwiftUI 中的安全区域的主要内容,如果未能解决你的问题,请参考以下文章
在 Swift 中使 NavigationBar 子视图可点击