SwiftUI 导航栏多余 Space 即使隐藏
SwiftUI Navigation Bar Excess Space even when hidden
我有一个包含一些元素的导航视图(示例如下所示,请注意上面的 space),由于某种原因,顶部有多余的 space。更具体地说,我正在为 iPad 开发一个应用程序,顶部多余的 space 困扰着我。我的代码摘录如下所示。
var body: some View {
NavigationView {
Text("There is an excess space above")
}.navigationViewStyle(StackNavigationViewStyle())
.navigationBarTitle(Text(""), displayMode: .inline)
.navigationBarHidden(true)
.edgesIgnoringSafeArea(.top)
}
由于问题已解决 ,我使用了 .navigationViewStyle(StackNavigationViewStyle())
,调用其他方法只是为了尝试删除此 space(来自此处的其他类似问题) ,但最终没有奏效。 iPhone 和 iPad 模拟都会发生这种情况。谢谢
必须在内部导航视图中指定这些修饰符,如下所示
NavigationView {
Text("There is an excess space above")
.navigationBarTitle(Text(""), displayMode: .inline) // !!
.navigationBarHidden(true) // !!
}.navigationViewStyle(StackNavigationViewStyle())
.edgesIgnoringSafeArea(.top)
经过几次尝试和错误,我设法让蓝色边框覆盖了整个屏幕(请注意以下屏幕截图中的蓝色边框)。还不完全确定为什么,但必须存在以下所有行才能使解决方案起作用。 @Asperi 提到我们必须将修饰符添加到导航视图内部,但出于某种原因,我们必须同时添加到 NavigationView 本身及其内部。
var body: some View {
NavigationView {
Text("There is no more excess space, the blue outline covers the entire screen")
.frame(maxWidth: .infinity, maxHeight: .infinity) // Fill screen
.navigationBarTitle("")
.navigationBarHidden(true)
}
.navigationViewStyle(StackNavigationViewStyle())
.navigationBarTitle("")
.edgesIgnoringSafeArea(.all)
}
我有一个包含一些元素的导航视图(示例如下所示,请注意上面的 space),由于某种原因,顶部有多余的 space。更具体地说,我正在为 iPad 开发一个应用程序,顶部多余的 space 困扰着我。我的代码摘录如下所示。
var body: some View {
NavigationView {
Text("There is an excess space above")
}.navigationViewStyle(StackNavigationViewStyle())
.navigationBarTitle(Text(""), displayMode: .inline)
.navigationBarHidden(true)
.edgesIgnoringSafeArea(.top)
}
由于问题已解决 .navigationViewStyle(StackNavigationViewStyle())
,调用其他方法只是为了尝试删除此 space(来自此处的其他类似问题) ,但最终没有奏效。 iPhone 和 iPad 模拟都会发生这种情况。谢谢
必须在内部导航视图中指定这些修饰符,如下所示
NavigationView {
Text("There is an excess space above")
.navigationBarTitle(Text(""), displayMode: .inline) // !!
.navigationBarHidden(true) // !!
}.navigationViewStyle(StackNavigationViewStyle())
.edgesIgnoringSafeArea(.top)
经过几次尝试和错误,我设法让蓝色边框覆盖了整个屏幕(请注意以下屏幕截图中的蓝色边框)。还不完全确定为什么,但必须存在以下所有行才能使解决方案起作用。 @Asperi 提到我们必须将修饰符添加到导航视图内部,但出于某种原因,我们必须同时添加到 NavigationView 本身及其内部。
var body: some View {
NavigationView {
Text("There is no more excess space, the blue outline covers the entire screen")
.frame(maxWidth: .infinity, maxHeight: .infinity) // Fill screen
.navigationBarTitle("")
.navigationBarHidden(true)
}
.navigationViewStyle(StackNavigationViewStyle())
.navigationBarTitle("")
.edgesIgnoringSafeArea(.all)
}