【问题标题】:How can I preview a device in landscape mode in SwiftUI?如何在 SwiftUI 中以横向模式预览设备?
【发布时间】:2019-10-30 17:30:56
【问题描述】:

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

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

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

【问题讨论】:

  • 这是个好问题!我尝试将 .environment(\.horizontalSizeClass,.compact).environment(\.verticalSizeClass, .compact) 添加到 iPhone SE 预览中,但没有旋转。
  • 你问的是故事板吗?
  • @AsadAliChoudhry 不,这是 SwiftUI。

标签: ios swift xcode swiftui xcode11


【解决方案1】:

Xcode 13

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

⚠️ 以下来自 WWDC21 的图片使用了 horizontalvertical,这在 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 横向模式的预期应用安全区域。

? 主从演示

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

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

    .environment(\.horizontalSizeClass, .regular)
    .environment(\.verticalSizeClass, .compact)

【讨论】:

  • 谢谢。 Apple 发布横向模式之前的最佳答案。
  • 希望苹果尽快推出横向模式
  • 我不同意; 今天的最佳答案是它无法完成。固定大小不会尊重安全区域(如前所述),但也不会调整辅助 chrome 的大小,例如状态、导航和标签栏。最后,在 iPad 上,它无法正确显示主视图/详细视图。
  • 现在它支持安全区域 AND 显示主/详细信息,如您在演示中看到的 @SteveMadsen 和其他 +20 :)
  • 此 hack 不适用于 live 预览。
【解决方案2】:

iOS 15 / Xcode 13

从 iOS 15 开始我们可以使用previewInterfaceOrientation:

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

【讨论】:

    【解决方案3】:
    ContentView().previewLayout(PreviewLayout.fixed(width:568,height:320))
    

    View - IOS screen dimensions for different devices

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-17
      • 2011-06-28
      • 2013-03-25
      • 1970-01-01
      • 2020-09-22
      相关资源
      最近更新 更多