Не удается принудительно повернуть ориентацию в ландшафтном режиме - PullRequest
0 голосов
/ 04 февраля 2020

У меня все приложение в портретном режиме. Тем не менее, один экран должен иметь возможность вращаться в альбомной ориентации (для воспроизведения видео). Я могу без проблем включить все ориентационные повороты через ответ @Jonathan Danek .

В моем AppDelegate у меня есть:

static var orientationLock = UIInterfaceOrientationMask.portrait

и впоследствии:

func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
    return AppDelegate.orientationLock
}

Итак, чтобы включить вращение для всех ориентаций, я делаю следующее, поскольку представлен контроллер видеовидеозаписи:

AppDelegate.orientationLock = UIInterfaceOrientationMask.all
UINavigationController.attemptRotationToDeviceOrientation()

Это прекрасно работает ? .. проблема в том, когда я пытаюсь изменить его обратно только на портретный режим.

Я пытаюсь сделать это, так как контроллер просмотра видео отклонен:

AppDelegate.orientationLock = UIInterfaceOrientationMask.portrait
UINavigationController.attemptRotationToDeviceOrientation()

.. но это не вызывает вышеуказанное Функция AppDelegate поддерживаетсяInterfaceOrientationsForWindow , если контроллер представления видео в настоящее время повернут в альбомную ориентацию. Интересно то, что будет запускать функцию, если в данный момент контроллер вида видео повернут в Портрет.

Так что мне интересно, как я могу настроить свой единственный контроллер вида на все ориентаций, но затем изменить его на просто портрет?

1 Ответ

0 голосов
/ 04 февраля 2020

Вы пытались перезаписать supportedInterfaceOrientations в вашем контроллере? Это может помочь.

Пример:

override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
    return UIInterfaceOrientationMask.all
}

Возвращает все ориентации интерфейса, поддерживаемые контроллером представления.

Apple Do c - поддерживаемые интерфейсы интерфейса

Короткая версия Swift 5.1:

override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
    .all
}
...