[iPhoneアプリ開発] iPhone・iPad対応、Retina対応

iPhoneアプリ開発

iPhoneアプリでの画像をiPad対応、Retinaディスプレイに対応方法メモ。
結論からいうと画像を4つ用意してあげれはよいみたい。
その前はUIGraphicsBeginImageContextで画像リサイズして対応していたんだけど、
画像を多用するアプリで処理が重いので断念。

それにしても、解像度はこの先大きくなると思い、予め全ての画像は2048×1536pxで作っておいてよかった・・。
おかげでiPad3retinaディスプレイにもすぐ対応できる。でも、これ以上大きくなるのは勘弁。。

iPad/iPhone解像度・ファイル名一覧

端末名 解像度 ピクセル密度 ファイル名
iPhone3 iPhone3gs 480×320px 163ppi img.png
iPhone4 iPhone4s 960x640px 326ppi img@2x.png
iPad2 1024×748px 264ppi img~iPad.png
iPad3 2048×1536px 264ppi img@2x~iPad.png
コード例

下記のように指定してれば端末に合わせて自動的に@2xや~iPad画像を読み込んでくれます。

UIImage img = [UIImage imageNamed:@”img”];

画像リサイズ&変換方法 その1

あとiPhoneアプリ開発でPDFを一括画像変換&リサイズ作業をよくするので、
PDF→JPEG一括変換用のコマンドを忘れないようにメモ。

pdf2jpg.sh

#!/bin/bash

if [ $# -ne 2 ];then
echo “Usage: $0 target.pdf outfile”
exit
fi

TARGET=$1
OUTFILE=$2

gs \
-dSAFER \
-dBATCH \
-dNOPAUSE \
-sDEVICE=jpeg \
-g960x640 \
-dTextAlphaBits=4 \
-dGraphicsAlphaBits=4 \
-dMaxStripSize=8192 \
-sOutputFile=${OUTFILE}_%d.jpg \
${TARGET}

上記のファイルを作成したら、後はTerminalから下記のコマンドを実行すればOK。

$/bin/bash pdf2jpg.sh img.pdf img

参考: PDFファイルをページ毎にJPEG化するスクリプト

画像リサイズ&変換方法 その2

画像リサイズでもう一つお世話になっているコマンド。
JPEGをPNGに変換したり、リサイズ可能。

sips -s format png -z 640 480 img.jpg –out img.png

複数画像を一括で変更したい場合は、for文を使用。

for fname in images*.gif; do sips -s format png $fname –out ${fname%.gif}.png; done

参考

◯ Supporting High-Resolution Screens

Applications running in iOS 4 should now include two separate files for each image resource. One file provides a standard-resolution version of a given image, and the second provides a high-resolution version of the same image. The naming conventions for each pair of image files is as follows:

Standard: .
High resolution: @2x.
The and portions of each name specify the usual name and extension for the file. The portion is optional and contains either the string ~ipad or ~iphone. You include one of these modifiers when you want to specify different versions of an image for iPad and iPhone. The inclusion of the @2x modifier for the high-resolution image is new and lets the system know that the image is the high-resolution variant of the standard image.

ハマったところ

最初、@2xファイルも~iPadファイルを読みに行かずハマる。
Xcode4.0だと上手く読みに行ってくれなかった。
OSをLionにアップグレードして、Xcodeを4.3にしてビルドし直したら無事動いた。
アプリが動くなるのを恐れ、Lionアップグレードをしなかったのが逆に仇となってしまった。