swift - 如何使自定义导航栏背景颜色超出 SwiftUI 中的安全区域

标签 swift swiftui safearealayoutguide

我实现了一个自定义导航栏,它只是一个带有标题文本的 View 和一个关闭 View 的箭头。我只希望导航栏的背景颜色超出顶部安全区域,而内容遵守安全区域限制
这是自定义导航栏的代码:

struct CustomNavigationBar: View {
    
    @Environment(\.presentationMode) var presentationMode
    let title: String
    
    var body: some View {
        HStack {
            Button(action: {
                presentationMode.wrappedValue.dismiss()
            }, label: {
                Image(systemName: "chevron.left")
                    .font(.title2)
                    .foregroundColor(Globals.Color.background)
            })
            Spacer()
            Text(title)
                .font(.title2)
                .bold()
                .foregroundColor(Globals.Color.background)
            Spacer()
        }
        .padding()
        .background(Globals.Color.crimson)
    }
}
这是使用自定义导航栏的示例 View 的代码:
var body: some View {
    ZStack {
        VStack {
            CustomNavigationBar(title: "Sample Title")
            Spacer()
        }
    }
}
下面我附上了当前 View 的屏幕截图:
Navigation bar view's red background stops at safe area]

最佳答案

你应该放一个 ignoresSafeArea在深红色的背景上。

struct CustomNavigationBar: View {
    
    @Environment(\.presentationMode) var presentationMode
    let title: String
    
    var body: some View {
        HStack {
            
            Button(action: {
                presentationMode.wrappedValue.dismiss()
            }, label: {
                Image(systemName: "chevron.left")
                    .font(.title2)
                    .foregroundColor(Color.white)
            })
            Spacer()
            Text(title)
                .font(.title2)
                .bold()
                .foregroundColor(Color.white)
            Spacer()
            
        }
        .padding()
        .background(Color.red.ignoresSafeArea()) /// here!
    }
}
结果:
Red background expands to fill screen, while inner text respects safe area

关于swift - 如何使自定义导航栏背景颜色超出 SwiftUI 中的安全区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67352628/

相关文章:

ios - UIButton 的区别!和 UI 按钮?在 swift IOS 中

ios - 无法使用户定义的运行时属性起作用

xcode9 - 将最低部署目标升级到iOS 9后,无法使用Xcode 9中的安全区域

ios - 重写 viewSafeAreaInsetsDidChange 需要调用 super 吗?

ios - ScrollView 未滚动到顶部

ios - 导航 Controller 和容器 View 之间的通信

swift - 无法出示 Apple Pay 授权 Controller

ios - 限制 SwiftUI 中矩形边界的拖动

ios - 关闭工作表后SwiftUI重新加载 View

SwiftUI ObjectBinding 不会使用 combine 从可绑定(bind)对象接收 didchange 更新