查看地图会删除透明顶栏

问题描述 投票:0回答:1

这是一个非常奇怪的错误,我不知道为什么会发生。

当我在我的视图中有

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)
}

有人知道发生了什么事吗?

swift swiftui mapkit
1个回答
0
投票

当您添加 Map 视图(它是 MKMapView 的表示)时,导航栏的样式可能会由于 MKMapView 修改 UIKit 方面周围导航控制器的外观而改变。 MKMapView 倾向于强制导航栏变得半透明。

修复:您可以在 SwiftUI 视图的“onAppear”修饰符中设置导航栏的外观。

.onAppear {
let appearance = UINavigationBarAppearance()
appearance.configureWithTransparentBackground()

UINavigationBar.appearance().standardAppearance = appearance
UINavigationBar.appearance().scrollEdgeAppearance = appearance }
© www.soinside.com 2019 - 2024. All rights reserved.