Как восстановить правильную ориентацию UIViewController после того, как ориентация была вынуждена альбомной ориентацией другим (iOS)? - PullRequest
0 голосов
/ 11 февраля 2020

Проблема, которая у меня возникла, немного странная, и я не могу найти какие-либо хорошие решения там. Таким образом, у меня есть два UIViewController, один может принимать все ориентации, другой можно просматривать только в альбомной ориентации

internal override func shouldAutorotate() -> Bool {
    return true
}

internal override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
    return UIInterfaceOrientationMask.Lanscape
}

Если я нахожусь в портретном режиме на ViewController1, и я пу sh VC2, он вращается просто хорошо, но когда я покидаю VC2, VC1 застревает в альбомной ориентации, хотя само устройство находится в портретном режиме. Как я могу это исправить? Я попытался вызвать метод AttemptToRotateToDeviceOrientation в методе ViewDidAppear VC1, но он ничего не делает

1 Ответ

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

Вам просто нужно создать экземпляр делегата приложения в вашем контроллере вида, например:

let appDel = UIApplication.shared.delegate as! AppDelegate

В Viewwillappear () контроллера представления просто добавьте этот код для ландшафта

appDel.myOrientation = .landscape
UIDevice.current.setValue(UIInterfaceOrientation.landscapeLeft.rawValue, forKey: "orientation")

И для портрет добавить этот код

appDel.myOrientation = .portrait
UIDevice.current.setValue(UIInterfaceOrientation.portrait.rawValue, forKey: "orientation")
...