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