首页 > 解决方案 > SwiftUI - 如何在选项卡式视图中获得透明状态栏?

问题描述

我的应用程序第一个根视图是带有两个选项卡的选项卡式视图。第二个选项卡是带有表单的导航视图。设置可以总结如下:

struct ContentView: View {
  var body: some View {
    TabView {
      // First view
      // ...

      NavigationView {
        Form {
          // Form details
          // ...
        }
      }
      .tabItem {
        // Text and image for the tab view item
      }
    }
  }
}

问题是表单视图的背景不是白色的,它有轻微的对比(对于分组列表),这与顶部的状态栏产生了可耻的分离:

在此处输入图像描述

此行为在其他应用程序(例如 Apple 应用程序)中不存在。例如,Pages 应用程序的主视图是一个选项卡视图,状态栏保持透明并且与顶部栏标题的颜色相同。

在此处输入图像描述

我想要与 iPhone 设置应用程序相同的行为,标题颜色与状态栏视图匹配。

这里的问题似乎是控制状态栏外观的选项卡视图,如果我删除它一切正常。

有没有办法在选项卡视图中获得这种行为?

标签: swiftxcodeuser-interfaceswiftui

解决方案


您可以将您的包装TabView放入ZStack并设置.edgesIgnoringSafeArea(.top)为您的堆栈

var body: some View {
        ZStack {
            TabView {
                Form {
                    Text("OK")
                }
            }.tabItem {
                Text("Show")
            }
        }.edgesIgnoringSafeArea(.top)
    }

推荐阅读