首页 > 解决方案 > NavigationView 栏材料在 iOS 15 上不可见

问题描述

在 iOS 15 上,具有NavigationViewwith.inline模式的应用不再显示您在导航栏上看到的模糊材质颜色。

示例代码:

struct ContentView: View {
    var body: some View {
        NavigationView {
            ZStack {
                Color.red.ignoresSafeArea()
                
                Text("Content")
            }
            .navigationBarTitleDisplayMode(.inline)
        }
    }
}

比较:

iOS 14.4 iOS 15
iOS 14.4 结果 iOS 15 结果

如何解决此问题以保持 iOS 14 行为?

标签: swiftswiftuiswiftui-navigationview

解决方案


虽然它并不完美,但有一种方法可以使用SwiftUI-Introspect来解决这个问题。

仍然存在一个问题,即对于第一次渲染,更改尚未产生效果。

我找到的解决方案是从这里部分发现的。

使用 Introspect,我添加了以下代码:

NavigationView {
    /* ... */
}
.introspectNavigationController { navController in
    navController.navigationBar.scrollEdgeAppearance = navController.navigationBar.standardAppearance
    navController.navigationBar.isTranslucent = true
}

它现在可以工作了,但如果有 100% 的 SwiftUI 解决方案会更好。


推荐阅读