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)
}
}
}
问题: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)
}
}
}