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
}
}
}
}