Я использую statusBarOrientation, чтобы определить ориентацию моего UIViewController и настроить представления соответственно в функции viewWillTransition (to size: ...)
override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
var orientations:UIInterfaceOrientationMask = .landscapeRight
if !self.disableAutoRotation {
switch Settings().orient {
case .landscape:
orientations = .landscape
case .portrait:
orientations = .portrait
default:
orientations = .all
}
}
return orientations
}
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
let orientation = UIApplication.shared.statusBarOrientation
NSLog("View will transition to \(size), \(orientation.rawValue)")
super.viewWillTransition(to: size, with: coordinator)
coordinator.animate(alongsideTransition: { [unowned self] (_) in
...
}
}
Проблема: эта функция вызывается, даже если это представление контроллера представленияне на вершине.Иногда я ограничиваю вращение этого контроллера вида портретным или альбомным в зависимости от настроек пользователя.Другие контроллеры представления, которые представляет этот контроллер представления, могут свободно вращаться в любой ориентации.И когда они вращаются, они нарушают и этот контроллер вида.Как я могу предотвратить это?