UIInterfaceOrientation не изменяется после того, как приложение выходит на передний план - PullRequest
0 голосов
/ 25 сентября 2018

Проблема

При переходе с background state orientation приложения не сразу меняется на portrait.Используемая мной функция ниже должна вызываться дважды с некоторой задержкой или потянуть status bar или повернуть устройство, чтобы увидеть изменения.

Подход

Ясделать видеоплеер в моем приложении.По умолчанию приложение поддерживает только ориентацию portrait, но при воспроизведении видео пользователь может переключаться между режимами fullscreen(landscape) и portrait вручную.

Code

    func fullScreenButtonDidTap(_ videoPlayer: VideoPlayerController) {
        let delegateOrientation: UIInterfaceOrientationMask
        if ourOrientation == .portrait{
            // move to landscape
            ourOrientation = .landscapeRight
            delegateOrientation = .landscapeRight
        }else{
            // move to protrait
            ourOrientation = .portrait
            delegateOrientation = .portrait
        }

        appDelegate.orientation = delegateOrientation
        let value = self.ourOrientation.rawValue
        UIDevice.current.setValue(value, forKey: "orientation")

    }

Где свойство delegateOrientation используется в AppDelegate

    public var orientation: UIInterfaceOrientationMask = UIInterfaceOrientationMask.portrait

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

Ответ приемлем в Swift или в Obj-C

...