2012年10月3日 水曜日 HOME > Objective-C
【Objective-C】iPhone5(4インチ)のサイズ判別など、画面サイズの取得にはUIScreenが便利

今までiPad未対応のアプリのみを作っていたので、あまり縁のなかった、解像度にあわせた表示内容の変更。ただ、iPhone 5が発売され、新解像度である4インチの出現によってそうは言っていられなくなりました。
これから出る4インチのiPod touchにも備え、ディスプレイのサイズを判別する方法を調べてみると、UIScreenクラスの使い方がとっても簡単で、便利そうです。
使い方は簡単でUIScreen > mainScreen > bounds の size で、スクリーンのサイズを引っ張ってきます。4インチだと320x568になるので、そこで判別します。ユニバーサルアプリではなければ、それ以外を3.5インチとしておけば良いでしょう。
CGSize screenSize = [[UIScreen mainScreen] bounds].size;
if(screenSize.width == 320.0 && screenSize.height == 568.0)
{
//4インチの場合はここに
}
色んなところで利用したい場合に、毎回長ったらしく書いたり、クラスもしくはプロジェクト単位でフラグ管理したりするのも面倒なので、UIScreenを継承したサブクラスを作って簡略化。
//SZUIScreenStatus.h
@interface SZUIScreenStatus : UIScreen
+ (BOOL)is4inch;
@end
//SZUIScreenStatus.m
#import "SZUIScreenStatus.h"
@implementation SZUIScreenStatus
+ (BOOL)is4inch
{
CGSize screenSize = [[self mainScreen] bounds].size;
return screenSize.width == 320.0 && screenSize.height == 568.0;
}
@end
//SZUIScreenStatus.h をimportして
if([SZUIScreenStatus is4inch])
{
//4インチの場合はここに
}
今回はサブクラスに4インチの判別のみを加えてみました。
他には [[UIScreen mainScreen] scale] によるRetinaの判別(scaleが2.0だとRetina)や、iPadの判別などもサブクラスに加えていけば、より使いやすくなるかもしれません。
それでは、Xcodeでまだ終わらぬiPhone 5の4インチ対応作業に戻りたいと思います。