我尝试在iPhone XR模拟器上横向运行我的应用程序,但屏幕空白。
下面的代码是我的测试。如果删除NavigationView,它可以在iPhone 8模拟器上正常运行,也不能在iPhone XR模拟器上正常工作。
+
我希望我会同时看到横向和纵向的屏幕尺寸。
有人对这种组合有任何经验吗?
答案 0 :(得分:12)
没有错。只是当大型iPhone处于横向时,其水平尺寸类别将设置为.regular
,而不是.compact
。想起来,就像是一台iPad。
您可以通过从屏幕的左侧滑动来进行验证:
如果您在未选择任何内容的情况下更改了代码以添加默认视图,则会得到另一种外观:
struct ContentView: View {
var body: some View {
NavigationView {
GeometryReader { gp in
VStack(alignment: HorizontalAlignment.center) {
Text("Width: \(gp.size.width)")
Text("Height: \(gp.size.height)")
NavigationLink(destination: Text("Something got selected")) { Text("Select something") }
}
}
Text("No Selection")
}
}
}
如果要强制将其压缩为.compact,请执行以下操作:
struct ContentView: View {
var body: some View {
NavigationView {
GeometryReader { gp in
VStack(alignment: HorizontalAlignment.center) {
Text("Width: \(gp.size.width)")
Text("Height: \(gp.size.height)")
NavigationLink(destination: Text("Something got selected")) { Text("Select something") }
}
}
Text("No Selection")
}.environment(\.horizontalSizeClass, .compact)
}
}
答案 1 :(得分:0)
将此修饰符添加到NavigationView可以禁用主视图-详细视图。
NavigationView {
// Code
}
.environment(\.horizontalSizeClass, .compact)