Приложение iOS ARKit: как повернуть пользовательский интерфейс (экран), не поворачивая вид изнутри камеры? - PullRequest
3 голосов
/ 12 марта 2019

Я пытаюсь создать приложение для iOS, в котором есть опыт работы с AR, используя ARKit.Теперь у приложения есть вид запуска с кнопкой «Пуск» (которая отображается первой после запуска приложения) и вид AR (который отображается после нажатия кнопки «Пуск» на экране запуска), иУ меня также есть viewcontrollers для каждого.Представление AR по сути представляет собой полноэкранный режим ARSCNView, который показывает изображение с камеры в режиме реального времени, а также некоторые кнопки UIB.

Кажется, все работает хорошо, пока я не хочу указать ориентацию на каждом этапе.Требуется, чтобы начальный вид был портретным, а вид AR - правым.Чтобы автоматически изменить ориентацию экрана, я попытался добавить следующий код в viewDidLoad() для AR ViewController:

let value = UIInterfaceOrientation.landscapeRight.rawValue
UIDevice.current.setValue(value, forKey: "orientation")

и установить

override var shouldAutorotate: Bool {
    return false
}

Однако онне работали хорошо --- Хотя ориентация пользовательского интерфейса была изменена правильно, предварительный просмотр камеры также был «повернут» на 90 градусов (поэтому все изображения, которые вы увидите в приложении, будут поворачиваться на 90 градусов):

image1 (Устройство теперь физически портретное, изображение с камеры несколько вертикальное)

image2 (Устройство теперь физически вправо, ноизображение с камеры по-прежнему вертикальное)

Я также попробовал другой метод:

override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
    return UIInterfaceOrientationMask.landscapeRight
}

Но все закончилось так же.

Я хочу, чтобы он был как на рисунке ниже,Интерфейс пользователя зафиксирован в альбомной ориентации, но камера всегда находится в нормальной ориентации (гравитация вниз):

image3 (снимок сделан с разрешенным автоматическим поворотом, но я хочу, чтобы он вращался автоматическипри переходе на этот вид!)

Любая помощь или подсказка будет принята с благодарностью!

...