Конвертируйте экран из портрета в пейзаж, он не сохраняет пейзаж, при повороте слева направо и наоборот. - PullRequest
0 голосов
/ 11 сентября 2018

Я изменил ориентацию uidevice в соответствии с требованиями экрана.

Например, экран A, на котором мне нужно делать только портрет.

Экран B Это должен быть пейзаж, и я сделал это.

Но после возвращения на экран A и снова я иду на экран B и поворачиваю устройство слева направо или справа налево. Ориентация экрана B меняется на портретную.

Пожалуйста, прокомментируйте, если у кого-то есть решение для этого.

Здесь я объясню весь сценарий того, что я делаю в своем проекте:

AppDelegate.swift

var orientationLock = UIInterfaceOrientationMask.portrait   //Defined variable for orientation

func application(_ application: UIApplication,
                 supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
    return shouldRotate ? .allButUpsideDown : .portrait
}

В классеA

   override func viewWillAppear(_ animated: Bool) {
       super.viewWillAppear(animated)
        let value = UIInterfaceOrientation.portrait.rawValue
        UIDevice.current.setValue(value, forKey: "orientation")
        Global.appDelegate.shouldRotate = false
    }

В классе B

DispatchQueue.main.async {
    let value = UIInterfaceOrientation.landscapeLeft.rawValue
    UIDevice.current.setValue(value, forKey: "orientation")
}
Global.appDelegate.shouldRotate = false

Теперь я попытался сделать экран B в горизонтальной плоскости во всем повороте, для этого я пыталсяметод ниже:

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
    coordinator.animate(alongsideTransition: nil, completion: {
        _ in
        if UIDevice.current.orientation == .portrait || UIDevice.current.orientation == .portraitUpsideDown {
            //                Global.AppUtility.lockOrientation(.landscape)
            let value = UIInterfaceOrientation.landscapeLeft.rawValue
            UIDevice.current.setValue(value, forKey: "orientation")
            Global.appDelegate.shouldRotate = true
        }
    })

}

Но этот метод работает только в первый раз, после выбора A и снова я иду на экран B, он сохраняет его портрет.

...