我正在使用swiftui创建简单的应用程序。在我的应用中,我有两个屏幕"ContentView"one_answers"Home".
在我的内容视图中
struct ContentView : View {
var body: some View {
NavigationView {
ZStack {
//Some views
NavigationLink(isActive: self.$routeHome, destination: {Home},label: {
Text("Home")})
.navigationBarTitle("title")
}
.navigationBarTitle("Page1")
}
}
}
和
struct Home : View {
var body: some View {
ZStack {
Color.red.edgesIgnoringSafeArea(.all)
ScrollView{
//some views
}
}.navigationBarTitle("Home")
}
}
Red
颜色首先占据整个屏幕。但是当我滚动时,NavigationView
区域不再是红色的了。在我的实际代码中,我想在单击滚动视图中的按钮时显示所有空间的红色。请帮我在SwiftUI中完成这个。
NavigationBar的颜色由顶部子scrollView的偏移量决定。如果你想总是隐藏导航栏背景,你可以使用toolbarBackground()
,像下面的代码。
struct Home : View {
var body: some View {
...
.navigationBarTitle("Home")
.toolbarBackground(.hidden, for: .navigationBar) // Added
}
}
注:我用iPhone模拟器16.2试过这个代码
要忽略SwiftUI中NavigationView中的安全区域,您可以使用edgesIgnoringSafeArea(_:)
修饰符并将。top和/或。bottom边缘传递给它,如下所示:
NavigationView {
VStack {
// your content here
}
.edgesIgnoringSafeArea(.top)
.edgesIgnoringSafeArea(.bottom)
}
这将允许VStack
的内容扩展到NavigationView
的顶部和底部安全区域之下。请注意,这可能会导致内容与系统状态栏和导航栏重叠,因此您可能需要调整布局或根据需要添加额外的填充或间距。
或者,您可以使用.navigationBarHidden(true)
修饰符完全隐藏导航栏,并允许内容扩展到屏幕的边缘。
NavigationView {
VStack {
// your content here
}
.navigationBarHidden(true)
}