Xcode4.2でiPad対応のためにユニバーサルアプリ(ユニバーサルバイナリ)化しようと思った

カタログ
  1. 1. ターゲットの設定を変更する
  2. 2. ソースコード内でのiPhone or iPad判定
  3. 3. iPadの画面の大きさを考慮してサイズを変更する
  4. 4. 仮想コントローラのサイズどうすべきだろう
  5. 5. ディスプレイのピクセル数の差
  6. 6. admob, iAd のサイズ

前にcocos2dでつくったColor LabyrinthをiPad対応させるためにユニバーサルアプリ化するためのメモ。

ターゲットの設定を変更する

Xcode4.2におけるiPhone/iPadユニバーサルアプリ化: iPhoneアプリ開発備忘録

を参考にしたけど、自分のアプリは cocos2d で作成したので xib がないので target を複製する必要がない。

  • TARGET の Summary > iOS Application Target > Device で Universal を設定。 その下のDevelopment Targetを適したものに変更する。 その他、Summary の設定をテキトーにみて変更すべきところや確認すべきところをテキトーにみる。
  • TARGET の Build Settings > Targeted Device Family を iPhone/iPad に設定… しようと思ったら既にこの設定になっていた。

ソースコード内でのiPhone or iPad判定

ユニバーサルアプリの共通ソースでiPhoneとiPadを判定する - chobikko より抜粋

1
2
3
4
5
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone){
//iphone = UIUserInterfaceIdiomPhone
}else {
//iPad = UIUserInterfaceIdiomPad
}

とまぁこんな感じで簡単に判定できるらしい。

iPadの画面の大きさを考慮してサイズを変更する

iPadだと画面が大きくなるのでそれように画像を用意して、あとは条件分岐なりしてコーディングで微調整していく。

以下のサイトが参考になりそう。

まぁ画面固定でスクロールとか難しい動きのないパズルゲームなので背景の大きさを調節するとかで済むはず…なんて思ったけど、画像作り直したりとか細かい位置を整えたりとかが面倒なのでここで挫折した。

もちろん一番良いのは iPad 用に画面構成とか作り直すのが一番いいんだろうけどやっぱり手間がかかる。最初から iPad 版も視野に入れて作るべきだったなぁと後悔した。そこまで手間をかけるほどの価値があるのかという疑問もあるけど orz

とりあえず画像はもうそのまま拡大してやっつけてしまおうかな。

仮想コントローラのサイズどうすべきだろう

iPad で画面が大きくなるからといって、仮想コントローラーを大きくすると絶対に操作性が悪くなってしまう…

ということで iPhoneの画面と同等の大きさにするにはサイズをどうすればいいのだろうかと計算した。

上記サイトによると

  • iPhone | 50 x 70 mm (320 x 480 px)
  • iPad | 147 x 196 mm (768 x 1024 px)

らしいので、1ピクセルあたりの実寸は

  • iPhone | 50/320 =40/256 = 5/32 (mm/px)
  • iPad | 147/768 = 49/256 (mm/px)

となり、1pxあたりの実寸の比は

  • iPhone : iPad = 40 : 49

49/40 = 1.225 なので、例えば iPhone で 245px の画像は iPad で 245 / 1.225 = 200px の画像と実寸で同等のサイズになる…はず。

ディスプレイのピクセル数の差

iPhoneiPadiPad - iPhoneiPad - iPhone x 2
320768448128
480102454464

admob, iAd のサイズ

iPadになると広告のサイズが当然変わるので このあたりも考慮しなければならない。

iAd は iPhone だと 320x50, 480x32、iPad だと 768x66, 1024x66

admob は 320x50, 300x250, 728x90, 468x60

関連があるかもしれない記事