【Objective-C】iPhone5(4インチ)のサイズ判別など、画面サイズの取得にはUIScreenが便利

iPhone5

今までiPad未対応のアプリのみを作っていたので、あまり縁のなかった、解像度にあわせた表示内容の変更。ただ、iPhone 5が発売され、新解像度である4インチの出現によってそうは言っていられなくなりました。

これから出る4インチのiPod touchにも備え、ディスプレイのサイズを判別する方法を調べてみると、UIScreenクラスの使い方がとっても簡単で、便利そうです。

使い方は簡単でUIScreen > mainScreen > bounds の size で、スクリーンのサイズを引っ張ってきます。4インチだと320x568になるので、そこで判別します。ユニバーサルアプリではなければ、それ以外を3.5インチとしておけば良いでしょう。

参考: UIScreen Class Reference

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インチ対応作業に戻りたいと思います。

タグ: iPhone5 4インチ 開発 iPhone SDK Xcode

プロフィール
Daisuke Suzuki
ウェブサイトの制作から運営管理、アプリ開発など、様々な挑戦をして試行錯誤の日々を送っているフリーランスです。対外業務をするお仕事生活から抜け、現在は個人制作でご飯を食べています。 最近はアプリ攻略サイト AppGames を制作・公開し、そちらも手がけています。詳しいプロフィール
サイト内検索
facebook
このブログについて1
一から制作したお手製ブログ ver1.23
2012年9月11日に開始。自分で見て触って動かして、日々コツコツと調整しています。