1

First of all, my project hierarchy:

tab bar controller -> navigation master -> view controllers

I have one page I want to rotate in landscape mode.

My project is compatible with all the device orientation modes.

enter image description here

I've manually frozen all the view controllers with autorotation returning false:

override func shouldAutorotate() -> Bool {
    return false
}

except the one I want to rotate. S

I'm trying this in the view controller I want to be displayed in landscape:

let value = UIInterfaceOrientation.LandscapeLeft.rawValue
UIDevice.currentDevice().setValue(value, forKey: "orientation")

But does nothing.

Also, I experimented an issue with this method. When the app was starting in landscape, the view was displaying in landscape and was unable to rotate. I manage to fix it with this method In my app delegate:

func application(application: UIApplication, supportedInterfaceOrientationsForWindow window: UIWindow?) -> UIInterfaceOrientationMask {
    if(self.restrictRotation == false){
        return UIInterfaceOrientationMask.Portrait//UIInterfaceOrientationMaskPortrait
    }
    else{
        return UIInterfaceOrientationMask.All//UIInterfaceOrientationMaskAll
    }
}

And in viewDidLoad setting the var to true where I want to allow rotations:

let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
appDelegate.restrictRotation = true
let value = UIInterfaceOrientation.LandscapeLeft.rawValue
UIDevice.currentDevice().setValue(value, forKey: "orientation")

I've tested with the debugger and the method application(application: UIApplication, supportedInterfaceOrientationsForWindow window: UIWindow?) is called, but the app don't rotate. I guess is because with a tab bar and a navigation controller, things has to be done differently, but don't know how exactly. Can anyone help with this?

Alfro
  • 1,524
  • 2
  • 21
  • 37
  • check this https://stackoverflow.com/questions/38308919/unable-to-force-uiviewcontroller-orientation/38308987#38308987 I hope this helps you – Reinier Melian Aug 15 '16 at 16:12

0 Answers0