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

SwiftUI: unwanted split view on iPad

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

我目前的设置是: 卡特琳娜 OSX 测试版 5 + Xcode 11 测试版 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

在 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

如何在 iPad 上制作 NavigationView 全屏(非分屏)?

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

... 
    NavigationView {
        Text("Hello world!")
    }
    .navigationViewStyle(.stack)
...

编辑:下面,我根据 Alexandre 的评论回答他的问题:

  • 为什么 iPad 的默认设置不是完整视图? 这只是 Apple 的选择...

  • 为什么这个修饰符在 NavigationView 闭包之外,而 Navigation Title 在里面... 也许这可以澄清:

iPad 使用此拆分样式,但为 iPhone 删除:

extension View{
    func phoneOnlyStackNavigationView() ->some View {
        if UIDevice.current.userInterfaceIdiom == .phone{
            return AnyView(self.navigationViewStyle(StackNavigationViewStyle()))
        } else {
            return AnyView(self)
        }
    }
}