Xcode3.xでは、"Upgrade current target for iPad"操作を行っていたが、Xcode4.2ではこの操作はなくなった。
Apple公式のiPad Programming GuideはXcode3.xの手順のままで内容は変更されていない。
1. TARGETSのコピーを作成
(1) Xcode4.2で、TARGETSを開いて右クリックすると、"Duplicate”と表示が出るので選択。
(2) 上記(1)操作により表示されたダイアログ画面で、"Duplicate and Transition to iPad"を選択。
(3) TARGETSに新たに"(TARGETS名称)-iPad"が作成されるのを確認。これはiPad専用となる。
iPhone, iPadどちらでも動作するようにする場合、1つのバイナリで動作するユニバーサルアプリとするか、iPhone,iPad用で別々のバイナリを用意することができる。"(TARGETS名称)-iPad"は、iPad専用のバイナリとして作成することができる。
(4) "Resource-iPad"フォルダが作成され、その中にxibがコピーされていることを確認。これがiPadの画面サイズに変換されている。
2. TARGETS Summaryの修正
(1) コピー元のTARGETSのSummaryを開き、iOS Application TargetのDevicesをUniversalに変更。
(2) 上記(1)操作により表示されたダイアログ画面で、"Copy"を選択。
(3) "iPad"フォルダが作成され、その中に"MainWindow-iPad.xib"が作成されていることを確認。これは"MainWindow.xib"がiPadの画面サイズに変換されたもの。これがユニバーサルアプリとしてiPadで動作させたときに読み込まれるxibとなる。
(4) iOS Application TargetのDeployment Targetは3.2以降にする。(3.2はiPadの初期バージョンのiOSバージョン番号)これによりユニバーサルアプリ化できる。
(5) コピー元のTARGETSのSummaryの、iPhone/iPod Touch Deployment Info, iPad Deployment Info それぞれのSupported Device Orientations、App Icons、Launch Images、Main Interfaceを確認、内容を適宜修正する。
これと併行して、アイコンやDefault画面はiPadヒューマンインタフェースガイドライン等のドキュメントを参照して正しく作成してアプリケーションバンドルに含めておく。
3. TARGETS Build Settings 及び、PROJECT Build Settingsの修正
(1) コピー元のTARGETSのBuild Settingsを開き、Targeted Device Familyを、iPhone/iPadに変更。
(2) iOS Deployment Targetを、3.2以降に変更。
4. Info.plistの修正
(1) Icon filesに、iPad用アイコン" Icon-72.png"を追加する。
(2) Supported interface orientationsを、iPhone,iPad用にそれぞれ設定する。
(3) Main nib file base name(iPad)に、"MainWindow-iPad"が設定されていることを確認する。
5. xibの修正
(1) 上記1.(4)で新たにResources-iPadフォルダの中に、iPhoneアプリ用として使われたxibが全てコピーされて作成される。このxibの画面サイズはiPad用に自動的に変換されているが、TableViewやBackground用イメージは元のiPhone画面サイズのままなので、適宜修正する。
(2) Resources-iPadフォルダの中のxibは、新たに作られたTARGETS "(TARGETS名称)-iPad"用でのみ動作する。すなわち、元のTARGETSのアプリケーションバンドルには含まれていない。
従って、ユニバーサルアプリとした元のTARGETSで動作させるためには、元のTARGETSのアプリケーションバンドルに含めなければならない。
その手法は、
(a) xib編集Utilities画面のinspector(一番左側のタブ)の、Target Membershipで切り替える。
(b) 一旦新たに作成したダミープロジェクトにコピーして、また元のTARGETSのアプリケーションバンドルとしてコピーする。
上記(a)は、今後はユニバーサルアプリとしてのみ開発する場合の操作。
上記(b)は、もしかしたら今後iPad専用アプリを作るかも知れないので[ "(TARGETS名称)-iPad" のTARGETS ]を残しておきたいときにする操作のひとつ。
元のTARGETSのアプリケーションバンドルに同一xib名称があるとエラーとなるため、ファイル名の末尾に"~ipad"をつけてリネームしておく。
ファイル名の末尾に"~ipad"をつけてリネームしておくと、iPadでユニバーサルアプリを動作させた場合はファイル名の末尾に"~ipad"がつけられたxibが自動的に読み込まれる。iPhoneで動作させた場合は従来のxibが自動的に読み込まれる。
xibの切替えに関してはプログラムを修正する必要はない。
(3) 上記2.(3)で作成された"MainWindow-iPad.xib"の中で定義されているViewControllerのNIB名称を、ファイル名の末尾に"~ipad"をつけてリネームしたxibに修正する。
6. プログラムの修正
(1) ユニバーサルアプリとして動作させるための修正を行う。フォントサイズやTableViewCellの高さ、shouldAutorotateToInterfaceOrientationの回転の向きなど。
iPhone,iPadの判断は下記のように行う。
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
// iPadの場合の動作
} else {
// iPhone, iPod Touchの場合の動作
}
7. Archive
バイナリをiTunes Connectにアップロードするときは、元のTARGETSを対象とする。
■参考記事
http://stackoverflow.com/questions/5630561/cant-create-ipad-xib-with-xcode-4
【iPadの最新記事】
少しわからないことがあったので
コメントさせてもらいました。
その箇所はDeviceをUniversalに変更したあと
「(2) 上記(1)操作により表示されたダイアログ画面で、"Copy"を選択。」
となっています。
このCopyとはどこをさしているのでしょうか?。
Universalに変更してもダイアログ等は表示
されないので理解ができてきません。
ご教授いただけると助かります!。