SwiftUI NavigationView删除空白

时间:2020-07-09 16:14:04

标签: swift swiftui swiftui-navigationlink swiftui-navigationview

我有一个HomeView

NavigationView {
    ZStack {
        VStack {
             NavigationLink(destination: ProfileView()) {
                 if session.userInSession?.activated != 1 {
                     completionText(message: "Complete Your Profile")
                 } else {
                     completionText(message: "Edit Your Profile")
                 }
             }
        }
    }
}

我的ProfileView没有包装在导航视图中,也没有标题栏:

VStack {
    ScrollView(showsIndicators: false) {
        ...
    }
}

但是我的ProfileView也可以从我的SettingView中访问

NavigationView {
    VStack(alignment: .leading) {
        List {
            NavigationLink(destination: ProfileView()) {
            }
        }
    }
}

当我从设置屏幕访问ProfileView时,它显示正常。但是,当我从HomeView访问它时,它会在顶部创建空白:

enter image description here

当我完成“设置”时就可以了:

enter image description here

如何删除上面的空白?

2 个答案:

答案 0 :(得分:1)

您的HomeView / s NavigationView似乎是.navigationBarTitleDisplayMode(.large)或自动的,默认情况下是.large,但是您的SettingView却有{{1} }(考虑到.navigationBarTitleDisplayMode(.inline)下的分隔线),因此您会看到不同的标题栏高度。

当然是假定由于没有详细的代码,但可能的解决方案是为< Setting添加显式模式,例如:

ProfileView

答案 1 :(得分:0)

空间可能是NavigationView的空标题。

您可以尝试隐藏导航栏标题:

NavigationView {
    ZStack {
        ...
    }
    .navigationBarTitle("")
    .navigationBarHidden(true)
}

作为测试,请尝试设置.navigationBarTitle("Some title"),看看您是否仍然看到此空白区域,或者是否已被某些标题文本替换。