iPhoneでの画面の向きの正しい判定
この記事は「京都 夏」iPhoneアプリケーションの開発に関するものです。
UIViewController を継承したクラスに以下のコードを書く事で、iPhoneの向きが自動で取得ができる。XCode で OpenGL のテンプレートから作成した場合は、UIViewController を自前で作成し間に挟む事。
//----------------------------------------
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return YES;
}
//----------------------------------------
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{
switch (toInterfaceOrientation) {
case UIInterfaceOrientationPortrait:
// 縦向きでホームボタンが下
case UIInterfaceOrientationPortraitUpsideDown:
// 縦向きでホームボタンが上
break;
case UIInterfaceOrientationLandscapeLeft:
// 横向きでホームボタンが左
case UIInterfaceOrientationLandscapeRight:
// 横向きでホームボタンが右
break;
}
}
//----------------------------------------
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation{
}
willRotateToInterfaceOrientation は回転開始時に呼ばれ toInterfaceOrientation には回転後の方向が入るが、didRotateFromInterfaceOrientation は回転後に呼ばれ fromInterfaceOrientation には回転前の方向が入るので、最終的な方向を知りたいなら toInterfaceOrientation で判定しなければならない。