У меня есть контроллер представления, встроенный в контроллер панели вкладок, который, помимо прочего, представляет AVCaptureVideoPreviewLayer в UIView.
Когда устройство поворачивается, я хочу, чтобы контроллер представления вращался вместе с ним, за исключением вышеупомянутого UIView.
В отличие от этого связанного вопроса , однако, я не просто вращаю / трансформирую мои другие виды в контроллере вида. Для других представлений необходимо использовать настроенное поведение поворота для автоматического размещения.
Я пробовал несколько вещей, включая простую настройку ориентации видео в портретную:
previewLayer.connection.videoOrientation = .portrait
для извлечения UIView в отдельный контроллер представления, встраивания этого контроллера представления в исходный контроллер представления и установки его свойств autoRotation
override var shouldAutorotate: Bool {
return false
}
override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
return .portrait
}
но потом я узнал здесь , что iOS смотрит только на контроллер представления верхнего уровня для этих свойств.
Со всем, что я пробовал, предварительный просмотр видео вращается с остальной частью контроллера представления, заканчивая вбок.
Единственное, что работает, но является хакерским и иногда приводит к смещению предварительного просмотра видео, это
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransition(to: size, with: coordinator)
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
if let videoPreviewLayerConnection = previewLayer.connection {
if let newVideoOrientation = AVCaptureVideoOrientation(rawValue: UIApplication.shared.statusBarOrientation.rawValue) {
videoPreviewLayerConnection.videoOrientation = newVideoOrientation
}
}
}
}
Мне в принципе нужна противоположность этого вопроса .
Как сделать так, чтобы предварительный просмотр видео не вращался, но также позволял нормально вращаться остальной части контроллера представления? (Такое же поведение, как и в приложении для iOS-камеры, за исключением того, что другие элементы пользовательского интерфейса вращаются вместо Поворот на 90 °)