Вы можете использовать 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()
}
}
}
результат должен быть:
ОБНОВЛЕНИЕ в соответствии с редактированием вопроса, которое я могу предложить Изменение макета представления в ответ на учебное пособие по классам размеров , оно основано на @Environment(\.horizontalSizeClass) var sizeClass
и я думаю, что вы можете найти решение из этого.