如何在 SwiftUI 中以横向模式预览设备?

How can I preview a device in landscape mode in SwiftUI?

如何在 SwiftUI 中以横向模式预览设备?

我只是有一个像这样的简单预览:

struct ContentView_Previews : PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

Xcode 13

现在您可以在横向模式下使用 .previewInterfaceOrientation 修饰符进行预览,使其成为 landscapeLeftlandscapeRight

⚠️ WWDC21 的下图使用 horizontalverticalNOT 在 Xcode 13 beta 中可用!


古老但并非无用的方法:

您可以将尺寸设置为您想要的任何横向尺寸 PreviewProvider:

struct ContentView_Previews : PreviewProvider {
    static var previews: some View {
        ContentView()
           .previewLayout(.fixed(width: 1024, height: 768))
           // iPad Mini landscape size
    }
}

这是 iPad Mini 横向模式大小。

更新:Xcode 从 IDE 左上角的选定模拟器中检测到与预览关联的设备,并将应用某些 iPad 和 iPhone 横向模式的安全区域。

Master-Detail 演示

struct ContentView: View {
    var body: some View {
        NavigationView {
            Text("Master")
            Text("Detail")
        }
    }
}

此外,您可以根据需要使用这两个修改器:

    .environment(\.horizontalSizeClass, .regular)
    .environment(\.verticalSizeClass, .compact)
ContentView().previewLayout(PreviewLayout.fixed(width:568,height:320))

View - IOS screen dimensions for different devices

iOS 15 / Xcode 13

从iOS15开始我们可以使用previewInterfaceOrientation:

struct ContentView_Previews : PreviewProvider {
    static var previews: some View {
        ContentView()
            .previewInterfaceOrientation(.landscapeRight)
    }
}