Обновлять пользовательский интерфейс при изменении ориентации в SwiftUI
Я начал изучать SwiftUI. Я пытаюсь обновить интерфейс при изменении ориентации. Я добавил @Environment(\.horizontalSizeClass) var sizeClass
в свой вид, а затем симулятор iphone автоматически обновляет пользовательский интерфейс при повороте. Но симулятор iPad не обновляет пользовательский интерфейс при повороте. Подскажите, пожалуйста, как обновить UI на iPad?
Ответы
Если вы посмотрите на классы размеров устройств в Руководстве по интерфейсу пользователя, вы заметите, что iPad имеет «обычную» ширину и высоту как в альбомном, так и в портретном режиме.
Поэтому, когда вы используете .horizontalSizeClass, он работает как на iPhone, так и на iPad, просто iPad не меняет sizeClass при повороте.
https://developer.apple.com/design/human-interface-guidelines/ios/visual-design/adaptivity-and-layout/
- Если вы установите размеры кадра с помощью GeometryReader, они будут автоматически обновляться при повороте устройства.
- Также очень полезно просто установить .frame (maxWidth :) для представлений, так что, если iPad находится в альбомной ориентации, содержимое представления будет ограничено. Где-то около 715 работает хорошо.