代码之家  ›  专栏  ›  技术社区  ›  mhergon

SwiftUI-在iPad上处理常规/常规大小的类

  •  0
  • mhergon  · 技术社区  · 4 年前

    我需要在横向和纵向方向上为iPad制作不同的布局,但iPad上的尺寸等级总是有规律的。苹果公司推荐的调整界面的方法是使用具有尺寸等级的自适应布局,但在iPad上,纵向和横向模式没有区别。

    有没有办法在iPad上呈现纵向和横向的不同布局,而不检测设备方向?

    例如,在iPhone上(紧凑型/常规型)将显示为:

    enter image description here

    在iPad上,横向(常规/常规)将显示为: enter image description here

    因此,目标是在纵向模式下在iPad上显示iPhone布局。

    谢谢!

    0 回复  |  直到 4 年前
        1
  •  4
  •   Asperi    4 年前

    您可以根据方向强制应用水平尺寸类。如果我正确理解了你的目标,这里是一个可能方法的演示(用Xcode 12.1/iOS 14.1测试):

    struct DemoViewSizes: View {
        @Environment(\.horizontalSizeClass) var horizontalSizeClass
    
        @State private var orientation = UIDevice.current.orientation
    
        var body: some View {
            Text("root_view_here")
                .onReceive(NotificationCenter.default.publisher(for: UIDevice.orientationDidChangeNotification)) { _ in
                    orientation = UIDevice.current.orientation
                }
                .environment(\.horizontalSizeClass, orientation == .portrait ? .compact : .regular)
        }
    }