我的应用程序使用 aTabView并包含在其中,NavigationView因此我可以转换到所选选项卡上的不同视图。我正在使用.navigationTitlewith.navigationBarTitleDisplayMode(.large)来向用户显示他们的位置(在下面的示例中,标题设置为"Pfizer")。一切正常,如下所示:
var body: some View {
TabView(selection: $selectedTab) {
NavigationView {
...
但是,一旦我在(或使用)ZStack周围放置 a ,包括导航标题在内的整个视图都会向上移动到安全区域,即使我没有指定任何地方!这是我在它周围使用时的样子:TabView.overlay.ignoresSafeAreaZStack
var body: some View {
ZStack(alignment: .center) {
TabView(selection: $selectedTab) {
NavigationView {
...
请注意,我打算使用 ZStack 在我的 TabView/NavigationView 顶部有条件地显示一个视图,如下所示:
@Binding var condition: Bool
var body: some View {
ZStack(alignment: .center) {
TabView(selection: $selectedTab) {
NavigationView {
...
}
}
.blur(radius: condition ? 3 : 0)
if condition {
VStack {
VStack(alignment: .center) {
Text("Some text")
.font(.title2).padding(.bottom)
}
.padding()
.background(Color(.secondarySystemBackground))
}
.padding(.horizontal, 40)
}
}
}
我通过反复试验设法弄清楚,只有.blur在. 如果我删除视图修饰符,那么我描述的问题就不会发生,因此 Asperi 的初始评论是有意义的。TabViewZStack.blur
我不理解这种行为,也不知道为什么使用会.blur弄乱安全区域。有人可以向我解释这种行为吗?

