2015年10月27日

【XCode】UIImageで画像を読み込む際、端末にあわせた画像を読みたい

前回端末毎の解像度の話をしました

ここで気になるのは
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];

めんどくさい!



続きを読む
posted by ヒイロ at 10:29| 福岡 | Comment(0) | TrackBack(0) | プログラム | このブログの読者になる | 更新情報をチェックする
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。