我有一个特定的SwiftUI视图,在iPad上既需要横向又要纵向,但在iPhone上只能是纵向。我已经看到了一些在UIKit中实现它的方法,但是与SwiftUI无关。是否可以这样做?
您可以使用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()
}
}
}
结果应该是:
UPDATE根据问题的编辑,我可以提出Changing a view’s layout in response to size classes tutorial,它基于@Environment(\.horizontalSizeClass) var sizeClass
,我想您可以从中找到解决方案。