Приложение SwiftUI IPadOS меняет текст в зависимости от ориентации - PullRequest
0 голосов
/ 06 ноября 2019

Я хочу изменить отображаемый текст в зависимости от ориентации устройства. Визуальное описание опишет то, что я пытаюсь достичь лучше:)

Вот ландшафтный режим landscape mode А вот портретный режим portrait mode

Я хотел бы отобразить краткий формат названия месяца в портретном режиме и нашел несколько постов, описывающих, как этого добиться путем определения ориентации устройства. Я также обнаружил, что это не относится к категории лучших практик, поэтому мне интересно, есть ли лучший способ. Код - это просто VStack с двумя текстовыми компонентами внутри ScrollView.

1 Ответ

1 голос
/ 06 ноября 2019

SwiftUI, похоже, не имеет ограничений или вариантов ограничений, как это делает конструктор интерфейса для ориентации. Я не думаю, что для этого пока есть лучшие практики. Я без колебаний буду использовать значения ориентации, пока не появится что-то, что позволит нам лучше реагировать на изменения ориентации.

Я бы, вероятно, сделал что-то подобное, чтобы отреагировать на ориентацию:

struct ContentView: View {
    @State var orientation: UIDeviceOrientation = UIDevice.current.orientation

    var body: some View {
        Text(orientation.isLandscape ? "Landscape" : "Portrait")
        .onAppear {
            NotificationCenter.default.addObserver(forName: UIDevice.orientationDidChangeNotification, object: nil, queue: OperationQueue.main) { _ in
                self.orientation = UIDevice.current.orientation
            }
        }
    }
}
...