作ろうとしているiPhoneアプリですが、まあ、最近のiPhone5以降のみ対応させるということで、4インチの解像度(640x1136)だけサポートすればいいか。
と思っていたのです。
が、自分の持っているiPhone4が非対応になるというのは悲しいよなあ……
だったら古い640x960の解像度にも対応させておくか。それならそのままiPad miniでも使える比率だし。
実のところ、高解像度(640x1136)の最近の機種は持っておりません! 表示はシミュレータでテストして、実機動作はiPhone4でやるか。
ということで二つの解像度の絵を用意したのです。
さて、画面に用意した絵をきっちりはめ込むにはどうしたらいいのでしょうか。
なるほど、XCode5のimages.xcassetsに異なる解像度の絵を入れておけば自動的に正しい解像度のものが選ばれて表示されると。
なんて便利なんでしょうか!
さっそく試してみると……
あれ?
解像度を変えると確かに絵も変わっているようですが、解像度が変わらないためにおかしなことに……
つまり、iPhone4だと640x960の絵が表示され、iPhone5のシミュレータでは640x960のエリアに640x1136の絵が縦に圧縮されて表示。下の部分が空白になるというわかりやすいお間抜けな状態に。
AutoLayoutなのか? システムの解像度を取得してUIImageViewに画像のファイル名を直接渡すのか?
さんざん試しましたが、うまくいきません。
なぜこんな簡単なことができないんだ?
もう完全に行き詰まった。
娘が水風船に中途半端に水を入れて膨らませたものをくれました。
行き詰まったので、それに顔を描いてみました。
おお、かわいくなった!

さて、その後もいろいろとやっていましたが、ついに解決しました!
下記の手順で自動に切り替えてくれるようです!
・640x960と640x1136の画像を用意する。
・images.xcassetsのiPhoneの2xに640x960の画像をドラッグ
・その隣のimages.xcassetsのiPhoneのR4に640x1136の画像をドラッグ
(必要であればUniversalに640x960の画像をセット。iPadに適用されます)
・Storyboardで該当するimage viewのattributes inspectorの[View][Mode]を[Top Left]にする。
はい、以上です!
間違っていたらスミマセン!
また、これはXCode5 (5.1.1)の情報です。