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` })}