在iPhone XR模拟器上横向使用SwifUI NavigationView有任何经验吗?

时间:2019-08-04 06:49:32

标签: ios ios-simulator swiftui iphone-xr

我尝试在iPhone XR模拟器上横向运行我的应用程序,但屏幕空白。

下面的代码是我的测试。如果删除NavigationView,它可以在iPhone 8模拟器上正常运行,也不能在iPhone XR模拟器上正常工作。

+

我希望我会同时看到横向和纵向的屏幕尺寸。

有人对这种组合有任何经验吗?

2 个答案:

答案 0 :(得分:12)

没有错。只是当大型iPhone处于横向时,其水平尺寸类别将设置为.regular,而不是.compact。想起来,就像是一台iPad。

您可以通过从屏幕的左侧滑动来进行验证:

enter image description here

如果您在未选择任何内容的情况下更改了代码以添加默认视图,则会得到另一种外观:

enter image description here

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,请执行以下操作:

enter image description here

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)