Блокировка и принудительное переключение ориентации одного контроллера вида в альбомный режим только в Swift (проблема с кадром) - PullRequest
0 голосов
/ 24 июня 2019

Так как мое приложение получило поддержку любой ориентации.Я хотел бы заблокировать только альбомный режим для определенного UIViewController.

Я использовал это https://stackoverflow.com/a/41811798/10150796

, он отлично работает для любой ориентации и заблокировать только портретный режим для конкретного UIViewController

Но когда я использую это для блокировки альбомный режим из сквозного портретного обзора, моя рамка обзора не обновляется до ландшафта.

Вот мой код ViewController

override func viewWillAppear(_ animated: Bool) {
        AppDelegate.AppUtility.lockOrientation(UIInterfaceOrientationMask.landscapeLeft, andRotateTo: UIInterfaceOrientation.landscapeLeft)  
}

override func viewWillDisappear(_ animated: Bool) {
        AppDelegate.AppUtility.lockOrientation(UIInterfaceOrientationMask.all)
}

Делегат приложения

struct AppUtility {

        static func lockOrientation(_ orientation: UIInterfaceOrientationMask) {

            if let delegate = UIApplication.shared.delegate as? AppDelegate {
                delegate.orientationLock = orientation
            }
        }

        /// OPTIONAL Added method to adjust lock and rotate to the desired orientation
        static func lockOrientation(_ orientation: UIInterfaceOrientationMask, andRotateTo rotateOrientation:UIInterfaceOrientation) {

            self.lockOrientation(orientation)

            UIDevice.current.setValue(rotateOrientation.rawValue, forKey: "orientation")
        }
    }

Вывод Впервые с любой ориентации все работает нормально:

enter image description here

Выходные данные Во второй раз в портретной ориентации это выглядит так: (

enter image description here

И если то же самое во второй раз из альбомной ориентации, то это нормально

Я пытался решить эту проблему за последние 2 дня, но не нашел, что не так, я также попытался с обновлением рамки просмотра вручную иэтот кадр обновляется, но событие щелчкакроме размера портретной рамки не работает: (

Может кто-нибудь сказать мне, где я не прав?Заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...