如何在 swiftUI 中扩展导航视图以显示在安全区域之外

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

我正在尝试使用 NavigationView 并创建自定义 NavigationModifier: 但是导航栏顶部有一些空白,我想用导航栏自己覆盖它。

我尝试添加ignoreSafeArea没有得到结果。

这是我的代码:

struct HomeScreen: View {
    var body: some View {
        NavigationView {
            VStack(spacing: 10) {
                Text("Hello:Home")
                    .modifier(NavModifier())
            }
        }
    }
}

修改器:

struct NavModifier : ViewModifier {
        
    init() {
        let color = UIColor(Color.appTheme)
        UINavigationBar.appearance().backgroundColor = color
     }
    
    func body(content: Content) -> some View {
        return content
            .navigationBarTitleDisplayMode(.inline)
            .ignoresSafeArea(edges: .top)
            .toolbar {
                ToolbarItem(placement: .principal) {
                                        Image(systemName: "person")
                                    }
            }
    }
}

和结果屏幕:

swiftui navigation swiftui-navigationview
1个回答
2
投票

我们需要彻底更换外观,比如

struct NavModifier : ViewModifier {

    init() {
       let navBarAppearance = UINavigationBarAppearance()
       navBarAppearance.configureWithOpaqueBackground()
       navBarAppearance.backgroundColor = UIColor.yellow     // << for test !!

       UINavigationBar.appearance().scrollEdgeAppearance = navBarAppearance
     }
// ...
}

使用 Xcode 13.4 / iOS 15.5 进行测试

© www.soinside.com 2019 - 2024. All rights reserved.