OverCurrentContext предотвращает изменение ориентации - PullRequest
0 голосов
/ 25 января 2019

Я представляю UIViewController (Позволяет называть его контроллером А) по току UIViewController (Позволяет называть его контроллером Б).Я хочу, чтобы контроллер A подарок на альбомной ориентации.Когда я устанавливаю overCurrentContext, он не меняет ориентацию по умолчанию (мне нужно повернуть устройство влево / вправо), однако, если я комментирую код overCurrentContext, все работает.

var landscapeOrientation = false
func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
    if landscapeOrientation{
        return UIInterfaceOrientationMask.landscapeRight
    }else{
        return UIInterfaceOrientationMask.portrait
    }
}

Как я представляю новый контроллер и устанавливаю ориентацию.

let delegate = UIApplication.shared.delegate as! AppDelegate
delegate.landscapeOrientation = true

let controller = ToolTipWithCheckImageViewController()
controller.view.backgroundColor = .clear
controller.modalPresentationStyle = .overCurrentContext //Which causes the bug
controller.modalTransitionStyle = .crossDissolve
topController.present(controller, animated:true)

PS: Я использую это delegate.landspaceOrientation=true также на некоторых других контроллерах, и потому что я не представляю его с overCurrentContext,все работает, поэтому с этим кодом НЕ проблема:)

P.S2: Родительский контроллер - UINavigationController

Я думаю, у этого вопроса есть проблемысо мной, но я не могу понять, предоставленное решение. Может ли контроллер представления, представленный модально в текущем контексте (UIModalPresentationStyleOverCurrentContext), вращаться на устройстве?

1 Ответ

0 голосов
/ 03 мая 2019

У меня был такой же эффект в виде контроллера оверлейного представления - если вам все равно нужен полноэкранный «размер», по крайней мере, для фонового представления, вы можете использовать .overFullScreen для modalPresentationStyle вместо .overCurrentContext (который по-прежнему будет отображать фон с помощью своего рода снимка, но вращение все равно будет работать).

...