gpt4 book ai didi

ios - SwiftUI 导航和状态栏在 TabView 内时颜色/透明度发生冲突

转载 作者:行者123 更新时间:2023-12-01 22:11:25 26 4
gpt4 key购买 nike

我的应用程序由 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 可以访问状态栏样式?或者可能还有其他解决方法?

large navigation bar screenshot

inline navigation bar screenshot

最佳答案

根据 Apple 文档,edgesIgnoringSafeArea(_:) 应应用于 TabView:

https://developer.apple.com/documentation/swiftui/vsplitview/3288813-edgesignoringsafearea

Extends the view out of the safe area on the specified edges.

struct ContentView: View {
var body: some View {
TabView {
NavView()
} // .edgesIgnoringSafeArea(.top) no longer necessary as of iOS 13.4
}
}

注意:Apple 似乎更改了默认行为,而 iOS 13.4 不再需要这样做。

关于ios - SwiftUI 导航和状态栏在 TabView 内时颜色/透明度发生冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58381133/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com