我的应用程序由TabView
内几个不同选项卡上的几个 View 组成。这些 View 创建自己的NavigationView
。不幸的是,TabView
的存在导致其颜色和透明度与应用程序的状态栏发生冲突,该状态栏不再与导航栏一致。
使用以下代码可以轻松地在示例应用程序中重现这一点。
struct ContentView: View {
var body: some View {
TabView {
NavView()
}
}
}
struct NavView: View {
var body: some View {
NavigationView {
List {
ForEach(0..<10, id: \.self) { _ in
Section(header: Text("Foo")) {
Text("Bar")
}
}
}
.listStyle(GroupedListStyle())
.navigationBarTitle("Foobar")
}
}
}
我使用分组列表样式使样式更改更明显,但默认样式相同。
是否有SwiftUI API可以访问状态栏样式?还是可能有其他解决方法?
最佳答案
根据Apple的文档,edgesIgnoringSafeArea(_:)
应该应用于TabView
:
https://developer.apple.com/documentation/swiftui/vsplitview/3288813-edgesignoringsafearea
struct ContentView: View {
var body: some View {
TabView {
NavView()
} // .edgesIgnoringSafeArea(.top) no longer necessary as of iOS 13.4
}
}
注意:看来Apple更改了默认行为,而iOS 13.4不再需要此行为。
关于ios - 在TabView中时,SwiftUI导航和状态栏的颜色/透明度冲突,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58381133/