[Xcode]iPhone5の4インチ縦長画面に対応するには

なんとなく、iPhone5対応も落ち着いてきたので、記事にしてみました。

記事内容は古いです。
2019年現在は、Launch Screenの有無です。
Launch Screenを入れるとそれだけで全対応。
Launch Screenを入れずに、Launch Imageで対応すればiPhoneXなどの画面を省けます。

iPhone5と第5世代iPod touchは、従来のそれらより画面がおっきいのです。

iPhone3GS
3.5インチ
320×480

iPhone4/4S
3.5インチ
640×960
3GSと大きさは同じだけど、解像度が倍のRetinaスクリーン。

iPhone5
4インチ
640×1136
iPhone4と同じ解像度で、サイズが大きい。
アプリは、3.5インチだけとするか、4インチも含めるか、のどちらかにしないといけない。


3.5インチだけ
のアプリを、4インチのiPhone5で起動すると、


上下に黒線が入りますが、同じように動作します。

開発環境

3.5インチだけにする場合は、最新のXcodeではなく、Xcode4.3を利用します。

2013/5/1から、3.5インチだけのアプリは申請できなくなりました。
新アプリ申請、更新も、4インチ対応が必須です。

4インチに対応する場合は、
最新のXcodeを利用します。


4.3と最新のXcodeは同居できる
ので、両方いれておくのがいいですね。
旧バージョンは、ダウンロードページから落とせます。
https://developer.apple.com/downloads/
(Appleデベロッパー専用です)

同時起動はしないように、切り替えたい場合は、片方をちゃんと終了させる必要があります。

iPhone5の4インチ対応する ということは

動作環境は、
iOS4.3以降となり、
端末は、iPhone3GS以降となります。

最新のXcodeでは、iPhone3Gに対応したバイナリ(armv6)を作成できないのです。

先に画面例で挙げた『あみくじ』は、
Xcode4.3でビルドしていて、
iOS3.0以降、iPhone3Gでも動作するようにしてあります。

まだまだ旧端末も対応させたい!って場合は、4インチ対応ができない

ということです。

具体的な対応方法

3.5インチで作成していたアプリを4インチに対応するには

最新のXcodeを使う。

3.5インチ用で作っていたプロジェクトをそのまま開いて、

この画像部分
TARGETSのSummary Launch Imagesに、4インチ用のDefault画像(640×1136)を放り込むだけで、4インチサイズで動作するアプリになります。

Default-568h@2x.png というファイル名称で追加されます。

これで実行すると、レイアウトはおかしいかもしれないけど、『あみくじ』のような黒線はなくなります。

あとは各画面の対応です。

画面サイズ対応の方法はいろいろあるのかもしれません。

あんまりよく調べてないのだけど、ささっとできた方法を紹介しておこうかと思います。

利用する場合は自己責任で!お願いします。

グローバル値を宣言

xxxx-Prefix.pch に 自分は4インチなのか? なBOOL値を宣言

BOOL g_is4inch;//4インチ画面かどうか

BOOL値を設定

xxxAppDelegate.m で windowの生成時に、BOOL値を設定しておきます。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
...
    //4インチ画面?
    g_is4inch = [self is4inch];
...

-(BOOL)is4inch{
    BOOL blRet = NO;
    if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone){
        if ([UIScreen mainScreen].scale == 2.0f) {
            CGSize result = [[UIScreen mainScreen] bounds].size;
            CGFloat scale = [UIScreen mainScreen].scale;
            result = CGSizeMake(result.width * scale, result.height * scale);
            if(result.height == 1136){
                blRet = YES;
            }
        }
    }
    return blRet;
}

このソースはたしか、Developer forumへの投稿を参考にしました。

レイアウトを整える

あとは、このBOOL値を使って、レイアウトを整えるだけです。

各画面で、3.5インチ用と4インチ用の配置を用意し、

画面部品の配置後に、

    if(g_is4inch){
        //4インチ用の画面配置
    }else{
        //3.5インチ用の画面配置
    }

としています。

お手軽です。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

コメント

  1. […] のうち実装も考えよう。 g_is4inchは、4インチ画面の判別です。 →→ [Xcode]iPhone5の4インチ縦長画面に対応するには google_ad_client = "pub-4315651820485563"; google_ad_width = 300; google_ad_height = 250; goo […]