AVCaptureVideoPreviewLayer с возможностью записи в альбомном режиме с помощью Quicktime
Итак, в настоящее время у меня есть приложение для камеры. У меня есть так, что он работает только в портретном режиме, но вы все равно можете записывать видео и фотографировать в ландшафтном режиме. Для этого я использую следующий код:
videoConnection?.videoOrientation = self.orientation()
Однако, поскольку приложение не регистрирует ландшафтный режим, вы не можете записывать экран через quicktime в пейзаже (он остается в портрете) (quicktime > file > record movie > выбрать имя устройства)
Есть ли способ исправить это? Мне не нужно что-то менять об устройстве для поддержки ландшафта, я просто хочу, чтобы уметь записывать его таким образом в быстром режиме, но ничего не нужно менять в пользовательском интерфейсе.
Ответы
Ответ 1
Вы можете установить вызов beginGeneratingDeviceOrientationNotifications
для UIDevice
и подписаться на UIDeviceOrientationDidChangeNotification
. Впоследствии вы можете использовать свойство ориентации UIDevice
в своем коде.
Ссылка документация Apple для UIDevice для подробностей.
Ответ 2
Попробуйте установить вызов beginGeneratingDeviceOrientationNotifications
для UIDevice
и подпишитесь на UIDeviceOrientationDidChangeNotification
.
Использовать пропорцию рутинизации UIDevice
.
Ответ 3
Что вам нужно сделать, так это обнаружить изменение ориентации:
Посмотрите эту документацию на яблоко Ссылка на класс UIDevice, для получения дополнительной информации об этом.
Вот пример реализации в
Obj-C && &
Swift
Ответ 4
Вот что я сделал! Использование отмеченного ответа.
func orientationChanged() {
var orient = UIDevice.currentDevice().orientation
if orient == UIDeviceOrientation.Portrait {
print("PORT")
UIApplication.sharedApplication().statusBarOrientation = UIInterfaceOrientation.Portrait
} else if orient == UIDeviceOrientation.LandscapeLeft {
print("OR ARE YOU CRASHING")
UIApplication.sharedApplication().statusBarOrientation = UIInterfaceOrientation.LandscapeRight
} else if orient == UIDeviceOrientation.LandscapeRight {
print("WHY YOU CRASHING")
UIApplication.sharedApplication().statusBarOrientation = UIInterfaceOrientation.LandscapeLeft
} else if orient == UIDeviceOrientation.PortraitUpsideDown {
UIApplication.sharedApplication().statusBarOrientation = UIInterfaceOrientation.PortraitUpsideDown
}