SwiftUI:iPad上不必要的拆分视图

Man*_*ero 4 tabs swiftui xcode11 macos-catalina

问题:Pad上的视图显示不想要的拆分视图。

我当前的设置是:Catalina OSX beta 5 + Xcode 11 Beta 5

这是我使用的代码,以及一个导航视图和一个导航标题

import SwiftUI

struct SwiftUIView: View {
    var body: some View {

        NavigationView {

                   Text("Search")

                       .navigationBarTitle(Text("Search"))




               }

    }
}

#if DEBUG
struct SwiftUIView_Previews: PreviewProvider {
    static var previews: some View {
        SwiftUIView()
    }
}
#endif
Run Code Online (Sandbox Code Playgroud)

当在iPad(物理设备和预览版)上模拟而不是全屏显示时,我得到了以下分屏显示:

在此处输入图片说明

如果我只有一个视图,而没有NavigationView,那么我将获得全屏视图:


import SwiftUI

struct SwiftUIView: View {
    var body: some View {



        Text("Hello World!")
    }
}

#if DEBUG
struct SwiftUIView_Previews: PreviewProvider {
    static var previews: some View {
        SwiftUIView()
    }
}
#endif
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

如何在iPad上将NavigationView全屏显示(而不是分屏显示)?

感谢有人可以帮忙!

cbj*_*rup 20

您可以将.navigationViewStyle(StackNavigationViewStyle())修饰符应用于NavigationView!

... 
    NavigationView {
        Text("Hello world!")
    }
    .navigationViewStyle(StackNavigationViewStyle())
...
Run Code Online (Sandbox Code Playgroud)

编辑:下面,我从他的评论中回答亚历山大的问题:

  • 为什么全屏不是iPad的默认视图?那只是苹果公司的选择...

  • 为什么此修饰符不在NavigationView闭包之外,而导航标题为何在里面...也许可以这样澄清:https : //stackoverflow.com/a/57400873/11432719

  • 完美,谢谢哥们!让我感到困惑的是: - 为什么 iPad 的默认设置不是全视图。- 为什么这个修饰符在 NavigationView 闭包之外,而导航标题在里面......再次感谢!:) (2认同)
  • 有没有办法动态更改 StackNavigationViewStyle?我希望能够从“column1 -> column2 -> fullscreen”进行导航。 (2认同)

Ati*_*eer 5

要在iPad 上使用此拆分样式但在iPhone 上移除此样式:

    extension View{
    func phoneOnlyStackNavigationView() ->some View{

        if UIDevice.current.userInterfaceIdiom == .phone{
            return AnyView(self.navigationViewStyle(StackNavigationViewStyle()))
        }else{
            return AnyView(self)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)