前回端末毎の解像度の話をしました
ここで気になるのは
NavigationBarに指定する画像や
フルスクリーンぴったりの一枚の背景画像を使用したいとき、
解像度ごとに用意し、画像の読み込みを切り替える必要が有ること
たとえばbg.pngという背景一枚絵の画像が320x480であるとし
iPhone4用にはbg.@2x.pngの640x960となりますね
これだけであれば
[UIImage imageNamed: @"bg.png"];
で読み込むことが出来ますが
iPhone5以降の端末では高さが足りませんし、
iPhone6以降では幅も足りません
AutoLayoutで引き伸ばししたところで解像度が保たれないためよくありません
bg-568h@2x.png 640x1136
bg-667h@2x.png 750x1334
bg@3x.png 1242x2208
と用意し、UIImageで読み込む前にスクリーンサイズをチェックして
必要なファイル名を指定して読み込むという手間が必要になります
float h = [UIScreen mainScreen].bounds.size.height;
float scale = [UIScreen mainScreen].scale;
NSString* imageName = @"bg.png";
if(scale >= 3.0f){
// iPhone6Plus
imageName = @"bg.png";
}
else if(h >= 667.0f){
// iPhone6
imageName = @"bg-667h.png";
}
else if(h >= 568.0f){
// iPhone5
imageName = @"bg-568h.png";
}
UIImage image = [UIImage imageNamed: imageName];
めんどくさい!
続きを読む