iPhoneアプリでもiPad用のアイコンを使用する

iPhone用に開発したアプリケーションは完璧ではないにせよiPadでも普通に動くようにビルドされる。
等倍モードならiPhoneと同じ解像度で、2xモードであればiPhoneの画面を倍に引き延ばした状態(スケーリング)でiPhoneと同じようにアプリケーションが動作する。2xモードは画面が大きくなり視認性が上がるがピクセル密度は元々のままなので、従来のピクセル密度で書かれた画像やフォントはジャギーが目立って汚く「取りあえず動くモード」という意味合いが強かった。

最新のiOSデバイス(iPhone4s/iPod Touch 4G/iPad 3G:Gは世代)は"Retina"と呼ばれる従来の倍(縦横で4倍)のピクセル数を持つために、非常に精細な画面を構成できる。なので上記で説明したiPad上でのiPhoneアプリの2xモードでもアプリケーション側が高精細な画像を用意することでかなり綺麗に表示することが出来るようになっている。実際、システムはスケーリングに対応しておりフォントやGUI部品などは何もしなくても綺麗である。

従って、ビジネスアプリケーションなどの場合、仮にiPadに最適化されていなかったとしても画像リソースやアイコンをRetina対応にしておけば十分に実用性をキープできる事が多いのだ。

アイコンはAppleがガイドラインとしてiPhone/iPod TochとiPad、それぞれの世代により必要なDPIと解像度、付けなければならないファイル名のルールを提示しているので、それに合わせてリソースを用意する。

画像

Retina対応といってもあまり拘らないのであれば、例えばUIKit上であればツールバーやタブバー、イメージなどに使用する画像データに関しては簡単だ。解像度の高いものを予め用意しておき拡張子の前に"@2x"を付加したファイル名を付けて、その半分のピクセル数にリサイズした画像を"@2x"を除いたファイル名にしておけばiOS側が最適なファイルを使ってくれる。
例)

list@2x.png : Retina用画像
list.png    : 非Retina用画像

このルールに従い名前を付けたファイルをバンドルに配置して、UITabBaItemrやUIToolbarButtonItemのファイル名の指定で"@2x"が付かない方のファイルを指定することで、デバイスに最適なファイルが使われる(Retinaデバイスの場合"@2x"がある場合はそちらが使われる)

アイコン

アイコンはiPhone用とiPad用でファイル名のルールが違うので注意が必要だ。

Icon@2x.png      : Retina用アイコン
Icon.png         : 非Retina用アイコン
Icon-Small@2x.png: Retina用検索アイコン
Icon-Small.png   : 非Retina用検索アイコン
Icon-72@2x.png      : Retina用アイコン
Icon-72.png         : 非Retina用アイコン
Icon-Small-50@2x.png : Retina用検索アイコン
Icon-Small-50.png    : 非Retina用検索アイコン

あとは起動時に表示されるスプラッシュ画像が縦/横と必要だが割愛する。

ちなみにiPhone用のプロジェクトではiPad向けのアイコンを表示しようとして上記ファイルプロジェクトに追加しても適用されない。
これはplistに対して使うアイコンファイルにiPad用のファイルが追加されていないためだ。

iPhoneアプリでもiPadで代替モードで動かす場合に、せめてアイコンくらいはと思ったならばバンドルにアイコン用ファイルを追加した上でpListを編集する必要がある。


これはとあるiPhoneアプリのプロジェクト-info.plistだが、本来記述が無いiPad用のアイコンファイルであるIcon-72@2x.png、Icon-72.pngを追加してある。Default.png, Default@2x.pngが重複している原因がよく解らないが、怖くて消せなかった)

この指定があることでアプリケーションをiPad2/iPad3Gで動作させた場合にそれぞれのアイコンが表示される。 (指定しない場合スプラッシュ画像(Default.png、Defaul@2x.png)が使われてしまうようだ)