Исходя из вашего комментария, вы хотите, чтобы все экраны были в портретной ориентации, но знаете, находится ли устройство в горизонтальной ориентации, не поворачивая интерфейс (для экрана камеры), вам следует…
- set Поддерживаемые ориентации интерфейса до Portrait in
your info.plist
определить ориентацию устройства с помощью CMMotionManager
…
let motionManager = CMMotionManager()
var currentOrientation = UIDeviceOrientation.portrait
func montiorOrientation() {
motionManager.startAccelerometerUpdates(to: OperationQueue()) { data, error in
if let error = error {
print("CM orientation error - \(error)")
return
}
let acceleration = data!.acceleration
let orientation: UIDeviceOrientation = fabs(acceleration.y) < fabs(acceleration.x) ?
(acceleration.x > 0 ? .landscapeRight : .landscapeLeft) :
(acceleration.y > 0 ? self.currentOrientation : .portrait) // Ignore portraitUpsideDown
if orientation != self.currentOrientation {
DispatchQueue.main.async {
self.currentOrientation = orientation
}
}
}
}