SwiftUI NavigationView 去掉白色space

SwiftUI NavigationView remove white space

我有一个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 访问它时,它会在顶部创建白色 space:

当我通过“设置”时,一切正常:

如何去除上面的白色space?

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

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

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

作为测试,尝试设置 .navigationBarTitle("Some title"),看看您是否仍然看到这个空的 space,或者它是否被 Some title text.

看起来你的 HomeView/s NavigationView.navigationBarTitleDisplayMode(.large) 或自动,默认情况下是 .large,但你的 SettingView.navigationBarTitleDisplayMode(.inline)(考虑到下方的分隔线 < Setting),因此您会看到不同高度的标题栏。

当然这是假设,因为没有详细的代码,但可能的解决方案是为 ProfileView 添加显式模式,例如:

VStack {
   ScrollView(showsIndicators: false) {
   }
}.navigationBarTitleDisplayMode(.inline)     // << here !!