【XCode】端末の言語設定から言語コードを取得する方法によって結果が異なる問題

仕事が久々のiOSアプリの開発になりまして

iPhone5sの頃くらいぶりの仕事ゆえ調べることが多いです


さて、今回はWebAPIを実行するときに言語IDを付与する必要があり

そのために端末の言語設定を取得して判定をすることを調べたときに

取得方法によって結果が異なることがわかったのでメモします。


続きを読む

[iOS] Swiftプログラムはじめました

そろそろ自作のiOSアプリたちを更新しないと思ってました

が、業務がなかなかiOSの作業ではなく、外にでているのもあり
ブログに書くことができませんでした

Unityでもないからねぇー

というわけで夜の時間に余裕ができてきたので
独学で今更ながらSwiftをスタートしていきます



本当にいまさら

【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];

めんどくさい!



続きを読む