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

SwiftUI-在iPad上处理常规/常规大小的课程,ipad,swiftui,landscape,size-classes,portrait,Ipad,Swiftui,Landscape,Size Classes,Portrait,我需要在横向和纵向上为iPad做一个不同的布局,但iPad上的尺寸等级总是常规的。苹果公司推荐的调整界面的方法是使用尺寸等级的自适应布局,但在iPad上,纵向和横向模式并没有区别 有没有办法在没有检测设备定向的情况下,在iPad上显示纵向和横向的不同布局 例如,在iPhone上(紧凑型/常规型)显示如下: 在iPad上,横向(常规/常规)显示如下: 因此,我们的目标是在iPad处于纵向模式时显示iPhone的布局 谢谢 您可以根据方向强制应用水平尺寸等级。如果我正确理解了您的目标,这里是一个

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

有没有办法在没有检测设备定向的情况下,在iPad上显示纵向和横向的不同布局

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

在iPad上,横向(常规/常规)显示如下:

因此,我们的目标是在iPad处于纵向模式时显示iPhone的布局


谢谢

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


苹果建议在iPad上使用相同的纵向和横向布局
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)
    }
}