第6章:Game Centerの残りは、対戦機能の実装のみだけど、実機(iPod touch)が1台しかなくて動作確認が出来ないので、とりあえずパスして次の章(といっても付録)に移ることにした。付録は次の3つ。
- iPadへのネイティブ対応
- アプリケーションアイコンの設定
- Retinaディスプレイへの対応
Xcode4では、まだどれもやってないので、それぞれ試そうと思う。実機はiPod touchとiPad2を持っており、iPadでも動かせたらGame Centerの対戦機能も確認できるはず。今回はiPad対応をやった。
- プロジェクトファイルの設定
- Viewのボタン配置の変更
- iPad用の画像を追加
- デバイスの回転に対応
プロジェクトファイルの設定
やったことは、Xcodeでプロジェクトファイルを選択したときに表示される設定の、Summaryタブ->iOS Application Target->Devicesを”Universal”に変えただけ。プロジェクト作成時にユニバーサルアプリを選択すればここはいじらなくていいかと思う。
Viewのボタン配置の変更
ボタンは右上や右下のあたりに配置していたが、iPadの大きな画面でも追従して端に配置されるようstoryboardファイルを編集した。やったことは、UtilitiesのSize InspectorにあるAutosizingをいじって右上や右下といった目的の場所になるよう設定すること。隣にExampleが表示されるので分かりやすい。
あと、便利と思ったのは、部品を複数選択した状態で、メニューのEditor->Embed in->Viewと選択したらひとつのViewにまとめてくれること。コイン画像やBetボタンをまとめて、同様に変更した。
iPad用の画像を追加
タイトル画面の画像をiPad用に用意した。iPhone/iPadの区別をコードでするには、UI_USER_INTERFACE_IDIOMマクロを使うみたい。”UIUserInterfaceIdiomPhone”がiPhoneまたはiPod touchで、”UIUserInterfaceIdiomPad”がiPad。
// タイトル画像を設定する - (void)setupTitleImage { // タイトル画像を読み込み、プロパティに設定する if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) { // iPhone or iPod touch self.titleImage = [UIImage imageNamed:TitleViewTitleFileName]; } else { // iPad self.titleImage = [UIImage imageNamed:TitleViewTitleFileName_iPad]; } }
デバイスの回転に対応
iPadのみ回転に対応させる。iPhone/iPadの区別はUI_USER_INTERFACE_IDIOMマクロでやり、iPadではPortrait/Horizontal両方対応ということでYESを返している。ただ、タイトル画面だけは画像が間延びするのを防ぐためにsetNeedsDisplayメソッドをコールして再描画している。
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) { // iPhone/iPod touch: 縦方向のみ return (interfaceOrientation == UIInterfaceOrientationPortrait); } else { // iPhone/iPod touch以外: 回転したときに再描画させる [self.view setNeedsDisplay]; return YES; } }
参考サイト
シーアンドアール研究所
売り上げランキング: 245996
関連エントリー