0

我的应用程序使用 aTabView并包含在其中,NavigationView因此我可以转换到所选选项卡上的不同视图。我正在使用.navigationTitlewith.navigationBarTitleDisplayMode(.large)来向用户显示他们的位置(在下面的示例中,标题设置为"Pfizer")。一切正常,如下所示:

使用 TabView/NavigationView 时的屏幕截图,周围没有 ZStack

    var body: some View {
        TabView(selection: $selectedTab) {
            NavigationView {
                ...

但是,一旦我在(或使用)ZStack周围放置 a ,包括导航标题在内的整个视图都会向上移动到安全区域,即使我没有指定任何地方!这是我在它周围使用时的样子:TabView.overlay.ignoresSafeAreaZStack

ZStack/TabView/NavigationView全部嵌套时的截图

    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弄乱安全区域。有人可以向我解释这种行为吗?

4

0 回答 0