问题: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
在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全屏显示(而不是分屏显示)?
感谢有人可以帮忙!
答案 0 :(得分:23)
您可以将.navigationViewStyle(StackNavigationViewStyle())
修饰符应用于NavigationView!
...
NavigationView {
Text("Hello world!")
}
.navigationViewStyle(StackNavigationViewStyle())
...
编辑:下面,我从他的评论中回答亚历山大的问题:
为什么全屏不是iPad的默认视图?这只是Apple的选择...
为什么此修饰符位于NavigationView闭包之外,而导航标题位于内部... 也许可以这样澄清:https://stackoverflow.com/a/57400873/11432719
答案 1 :(得分:3)
要在 iPad 中使用这种拆分样式,而在 iPhone 中删除:
extension View{
func phoneOnlyStackNavigationView() ->some View{
if UIDevice.current.userInterfaceIdiom == .phone{
return AnyView(self.navigationViewStyle(StackNavigationViewStyle()))
}else{
return AnyView(self)
}
}
}