簡體   English   中英

忽略 NavigationView 中的 SafeArea

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM