问题描述
在 iOS 15 上,具有 NavigationView
和 .inline
模式的应用不再显示您在导航栏上看到的模糊材质颜色。
示例代码:
struct ContentView: View {
var body: some View {
NavigationView {
ZStack {
Color.red.ignoresSafeArea()
Text("Content")
}
.navigationBarTitledisplayMode(.inline)
}
}
}
对比:
如何解决此问题以保持 iOS 14 的行为?
解决方法
虽然它并不完美,但有一种方法可以通过使用 SwiftUI-Introspect 来解决这个问题。
仍然存在一个问题,对于第一次渲染,更改尚未生效。
我找到的解决方案部分是从 here 中发现的。
使用 Introspect,我添加了以下代码:
NavigationView {
/* ... */
}
.introspectNavigationController { navController in
navController.navigationBar.scrollEdgeAppearance = navController.navigationBar.standardAppearance
navController.navigationBar.isTranslucent = true
}
它现在可以工作了,但如果有 100% SwiftUI 解决方案会更好。
,一种解决方法是:
struct ContentView: View {
var body: some View {
NavigationView {
ZStack {
// choose your color here
Color(red: 1,green: 0.8,blue: 0.8).ignoresSafeArea()
Color.red.edgesIgnoringSafeArea(.bottom)
Text("Content")
}.navigationBarTitleDisplayMode(.inline)
}
}
}