我正在尝试使用 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")
}
}
}
}
和结果屏幕:
我们需要彻底更换外观,比如
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 进行测试