【问题标题】:SwiftUI Navigation Bar Excess Space even when hiddenSwiftUI 导航栏即使隐藏也有多余空间
【发布时间】:2020-04-27 08:36:26
【问题描述】:

我有一个包含一些元素的导航视图(如下所示的示例,请注意上面的空间),并且由于某种原因,顶部有多余的空间。更具体地说,我正在为 iPad 开发一个应用程序,顶部的多余空间困扰着我。我的代码摘录如下所示。

var body: some View {

    NavigationView {
        Text("There is an excess space above")
    }.navigationViewStyle(StackNavigationViewStyle())
    .navigationBarTitle(Text(""), displayMode: .inline)
    .navigationBarHidden(true)
    .edgesIgnoringSafeArea(.top)
}

我使用了.navigationViewStyle(StackNavigationViewStyle()),因为问题解决了here,并且调用了其他方法只是为了删除这个空间(从这里的其他类似问题中),但最终没有奏效。 iPhone 和 iPad 模拟都会发生这种情况。谢谢

【问题讨论】:

    标签: swift swiftui navigationview


    【解决方案1】:

    这些修饰符必须在内部导航视图中指定,如下所示

    NavigationView {
        Text("There is an excess space above")
           .navigationBarTitle(Text(""), displayMode: .inline)  // !!
           .navigationBarHidden(true)                           // !!
    }.navigationViewStyle(StackNavigationViewStyle())
    .edgesIgnoringSafeArea(.top)
    

    【讨论】:

    • 试过了,和你发的图片类似,问题依然存在。更具体地说,多余的空间仍然存在于 iPad 中(没有导航视图,就不会有多余的空间)。我将改写问题以更多地关注 iPad 问题,谢谢!
    【解决方案2】:

    经过几次尝试和错误,我设法让蓝色边框覆盖了整个屏幕(请注意以下屏幕截图中的蓝色边框)。尚不完全确定原因,但必须存在以下所有行才能使解决方案起作用。 @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)
        }
    

    【讨论】:

      猜你喜欢
      • 2020-06-24
      • 1970-01-01
      • 1970-01-01
      • 2022-09-30
      • 1970-01-01
      • 1970-01-01
      • 2021-06-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多