samedi 2 juillet 2016

Changing orientations programatically does not work fine


My whole application is in portrait mode. I just want to use one view controller in landscape mode (left). func application(application: UIApplication, supportedInterfaceOrientationsForWindow window: UIWindow?) -> UIInterfaceOrientationMask { if let _navigationController = window?.rootViewController as? UINavigationController { if _navigationController.topViewController is FullScreenPlayerVC { return UIInterfaceOrientationMask.LandscapeLeft } } return UIInterfaceOrientationMask.Portrait } This is my controller A override func shouldAutorotate() -> Bool { return true } override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask { return UIInterfaceOrientationMask.Portrait } Now i push Controller B. This is my controller B override func viewDidAppear(animated: Bool) { super.viewDidAppear(animated) let value = UIInterfaceOrientation.LandscapeLeft.rawValue UIDevice.currentDevice().setValue(value, forKey: "orientation") } override func shouldAutorotate() -> Bool { return true } override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask { return UIInterfaceOrientationMask.Landscape } It works as per my requirement when i push controller B while holding my device in portrait mode but if i am holding my phone in landscape left already. It does not perform desired action. Searched a lot about it but not able to find the solution yet. I have tried many solutions but nothings working fine.

Aucun commentaire:

Enregistrer un commentaire