这是一个非常奇怪的错误,我不知道为什么会发生。
当我不在我的视图中有
Map
时,顶部栏是透明的(这是我想要的行为):
如果我DO在我的视图中有
Map
,顶部栏会变成半透明模糊的外观:
我的观点的基本结构是:
ScrollViewReader { value in
ScrollView(showsIndicators: false) {
VStack(spacing: 0) {
VStack(alignment: .leading, spacing: 0) {
VStack(alignment: .leading) {
Spacer()
.frame(height: 16)
Text("Map")
Map(interactionModes: []) {
//
}
.frame(minHeight: 194)
.background(Color.wireframe)
.cornerRadius(18)
}
.padding(.horizontal, 24)
.background(Color.white)
}
.frame(maxWidth: .infinity, alignment: .leading)
Spacer()
}
}
.edgesIgnoringSafeArea(.top)
}
有人知道发生了什么事吗?
当您添加 Map 视图(它是 MKMapView 的表示)时,导航栏的样式可能会由于 MKMapView 修改 UIKit 方面周围导航控制器的外观而改变。 MKMapView 倾向于强制导航栏变得半透明。
修复:您可以在 SwiftUI 视图的“onAppear”修饰符中设置导航栏的外观。
.onAppear {
let appearance = UINavigationBarAppearance()
appearance.configureWithTransparentBackground()
UINavigationBar.appearance().standardAppearance = appearance
UINavigationBar.appearance().scrollEdgeAppearance = appearance }