Detect rotation changes in iOS Detect rotation changes in iOS ios ios

Detect rotation changes in iOS


There are several method where you can do that, you can find them in the UIViewController class reference:

– willRotateToInterfaceOrientation:duration:– willAnimateRotationToInterfaceOrientation:duration:– didRotateFromInterfaceOrientation:

You could also do it in the viewWillLayoutSubviews method, but be careful with it, because it is called on the screen appearance too, and whenever you add a subview.

Edit:

Solution now deprecated, see accepted answer.


Since iOS 8, above methods were deprecated, and the proper way to handle and detect device rotation is:

-(void) viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id )coordinator;

To detect device orientation, you should (according to documentation): call the statusBarOrientation method to determine the device orientation


Since iOS 8 this is the correct way to do it.

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {    super.viewWillTransition(to: size, with: coordinator)    coordinator.animate(alongsideTransition: { context in        // This is called during the animation    }, completion: { context in        // This is called after the rotation is finished. Equal to deprecated `didRotate`    })}