忽略NavigationView中的SafeArea



我正在使用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)
}

相关内容

  • 没有找到相关文章

最新更新