[英]Ignore SafeArea inside NavigationView
我正在使用 swiftui 創建簡單的應用程序。在我的應用程序中,我有 2 個屏幕“ContentView”和“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
}
}
PS 我用 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)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.