Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

overriding shouldAutorotate not working in Swift 3

I'm trying to prevent rotation on one UIViewController and I can't achieve that.

I'm doing something like this:

open override var shouldAutorotate: Bool {     get {         return false     } }  override var supportedInterfaceOrientations: UIInterfaceOrientationMask {     get {         return .portrait     } } 

And the UIViewControler stills rotating. The UIViewController is inside a UINavigationController opened modally.

I have looked a lot of questions from here and none answers works for me.

In Swift 2 I used to override shouldAutorotate but in Swift 3 that function doesn't exist anymore.

How can I do that in Swift 3 what I used to do in Swift 2?

like image 298
pableiros Avatar asked Nov 04 '16 00:11

pableiros


1 Answers

I don't know why is a vote to close the question if I can reproduce this behavior a lots of times. The UIViewController is inside a UINavigationController opened modally.

This is what I did to solve the problem.

I create this class and I set to the UINavigationController that containt the UIViewController that I want to prevent to rotate

class NavigationController: UINavigationController {       override var shouldAutorotate: Bool {         return false     }      override var supportedInterfaceOrientations: UIInterfaceOrientationMask {         return .portrait     }  } 

And thats it, it works for me

like image 126
pableiros Avatar answered Sep 21 '22 23:09

pableiros