iOS8にて画面の向き変更時にコードにてレイアウト変更を行う場合、該当のViewControllerのviewWillTransitionToSizeに下記の通り実装する。
※ポイント
viewWillTransitionToSizeにそのまま実装しても、サイズが不確定の状態の為、位置がおかしくなる。
そのためcoodinatorのanimatealongsideTransition内部でサイズ変更処理を行う必要がある。
- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
{
[coordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context) {
if (size.width <= size.height) {
// ここで縦レイアウトの位置修正を行う。
}
else {
// ここで横レイアウトの位置修正を行う。
}
} completion:nil];
}