我的应用程序使用 aTabView
并包含在其中,NavigationView
因此我可以转换到所选选项卡上的不同视图。我正在使用.navigationTitle
with.navigationBarTitleDisplayMode(.large)
来向用户显示他们的位置(在下面的示例中,标题设置为"Pfizer"
)。一切正常,如下所示:
var body: some View {
TabView(selection: $selectedTab) {
NavigationView {
...
但是,一旦我在(或使用)ZStack
周围放置 a ,包括导航标题在内的整个视图都会向上移动到安全区域,即使我没有指定任何地方!这是我在它周围使用时的样子:TabView
.overlay
.ignoresSafeArea
ZStack
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 的初始评论是有意义的。TabView
ZStack
.blur
我不理解这种行为,也不知道为什么使用会.blur
弄乱安全区域。有人可以向我解释这种行为吗?