Since iOS6, you should not use willRotateToInterfaceOrientation:and didRotateFromInterfaceOrientation:. They are called only on the front most-represented view controller and will not be called on others. This means that if you have a pressed view controller or a view controller presented, all others will not display correctly.
Instead, you should always use viewWillLayoutit viewDidLayoutto handle rotation. They are both called inside the animation block, so anything you do that is animated will be animated.
, viewDidLayout. , . constant.