SwiftUI: сделать просмотр портрета только на iPhone, а на iPad - как портрет, так и альбомную ориентацию. - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть один конкретный c SwiftUI View, который должен быть как альбомным, так и портретным на iPad, но должен быть только портретным на iPhone. Я уже видел несколько способов реализовать это в UIKit, но ничего не связано с SwiftUI. Возможно ли это сделать?

1 Ответ

1 голос
/ 07 февраля 2020

Вы можете использовать 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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...