SwiftUI导航视图去除空白

7
我有一个 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个回答

12
看起来你的HomeView/s的NavigationView使用了.navigationBarTitleDisplayMode(.large)或者自动模式(默认值是.large),但是你的SettingView使用了.navigationBarTitleDisplayMode(.inline) (考虑到< Setting下面的分隔符),所以你会看到不同高度的标题栏。
当然,由于缺乏详细的代码,这只是一种假设,但要使它们相同的可能解决方案是为ProfileView添加显式模式,例如:
VStack {
   ScrollView(showsIndicators: false) {
   }
}.navigationBarTitleDisplayMode(.inline)     // << here !!

但是如何处理iOS 14以下的情况? - Daniel Wijono
@DanielWijono .navigationBarTitle("标题", displayMode: .inline) - Asperi

0

这个空格可能是您的NavigationView的空标题。

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

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

作为测试,请尝试设置.navigationBarTitle("Some title"),看看您是否仍然看到这个空白区域,或者它是否被Some title文本替换。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接