【问题标题】:iOS 15 navigation bar transparency problem with TabViewiOS 15 导航栏与 TabView 的透明度问题
【发布时间】:2021-12-02 09:41:09
【问题描述】:

如果后面没有元素,新的 iOS 15 使导航栏背景完全透明,如果有一个 List 并且您滚动元素到导航栏后面,这将获得白色半透明背景,但如果我使用 TabView TabItem在导航栏内有一个List,在标签项之间切换时背景没有正确更新,导航栏始终保持透明背景。

我正在使用 SwiftUI,我的基本代码如下所示:

struct Main: View {
    var body: some View {
        WindowGroup {
            NavigationView {
                TabView {
                    TabElement()
                    TabElement()
                    TabElement()
                    TabElement()
                    TabElement()
                }.navigationBarTitle(Text("Main"), displayMode: .inline).navigationBarBackButtonHidden(true)
            }
        }
    }
}

struct TabElement: View {
    var body: some View {
        VStack {
            List {
               Text("empty")
               Text("empty")
               Text("empty")
               Text("empty")
               Text("empty")
               Text("empty")
               Text("empty")
               Text("empty")
               Text("empty")
               Text("empty")
           }.listStyle(InsetGroupedListStyle())
        }.tabItem {
            Image(systemName: "star.fill")
            Text("dummy")
        }
    }
}

因此,这段代码创建了一个带有五个选项卡的选项卡视图,每个选项卡都有一个包含十个文本视图的列表,如果我切换到任何其他选项卡并将元素滚动到顶部,则可以通过导航栏而不是通过导航栏看到该列表后面。

是什么导致了这种行为?这是某种错误还是我的代码错误?这个问题在 iOS 14 中没有发生。* 因为导航栏总是有白色背景。

注意: 我发现可以使用:

if #available(iOS 15, *) {
    let appearance = UINavigationBarAppearance()
    appearance.configureWithOpaqueBackground()
    UINavigationBar.appearance().standardAppearance = appearance
    UINavigationBar.appearance().scrollEdgeAppearance = appearance
}

...在我的ApDelegate 中,但它看起来像是摆脱导航栏透明度的一种棘手方法。如果 Apple 决定在 iOS 15 中使用这种新设计,我想在我的应用中实现它,但前提是透明度更新正确。

【问题讨论】:

    标签: swift swiftui navigationbar tabview ios15


    【解决方案1】:

    是的,苹果在 iOS 15 中改变了这一点。
    如果你想在单个 ViewController 中改变导航栏的外观,可以使用这段代码:https://stackoverflow.com/a/69493819/9263676

    【讨论】:

      猜你喜欢
      • 2021-12-24
      • 2021-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-21
      • 2014-11-08
      • 2020-09-19
      • 2018-03-05
      相关资源
      最近更新 更多