SwiftUI:仅在iPhone上使View纵向,而在iPad上使View纵向和横向

问题描述 投票:0回答:1

我有一个特定的SwiftUI视图,在iPad上既需要横向又要纵向,但在iPhone上只能是纵向。我已经看到了一些在UIKit中实现它的方法,但是与SwiftUI无关。是否可以这样做?

ios swift swiftui screen-orientation
1个回答
1
投票

您可以使用UIDevice.current.model检查设备类型。因此,当您同时拥有两个视图(可旋转和不可旋转)时,可以根据设备类型将它们放入if...else语句中:

struct RotateOniPadOnly: View {

    private var needsToRotate: Bool {
        return UIDevice.current.model == "iPad"
    }

    var body: some View {

        if needsToRotate {
            return AnyView(Text("rotated text")
                .font(.system(size: 100))
                .rotationEffect(Angle(degrees: 180)))
        } else {
            return AnyView(Text("not rotated text")
                .font(.system(size: 50)))
        }
    }

}


struct RotateOniPadOnly_Previews: PreviewProvider {
    static var previews: some View {
        Group {
            RotateOniPadOnly()
                .previewDevice("iPad Pro (12.9-inch) (3rd generation)")

            RotateOniPadOnly()
        }

    }
}

结果应该是:

enter image description here

UPDATE根据问题的编辑,我可以提出Changing a view’s layout in response to size classes tutorial,它基于@Environment(\.horizontalSizeClass) var sizeClass,我想您可以从中找到解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.