Xcode6でiOS7対応アプリを作るときのワナ

Xcode6で作成したiOSアプリケーションのDevelopment TargetをiOS7へ変更し、意気揚々とiOS7のPhone5(S)シミュレータを立ち上げあげると・・・

ios7_iphone5_xcode6

なんじゃこりゃ!?画面が小さい!!!

でもって、iOS8のシミュレータで動かすと・・・

ios8_iphone5_xcode6

しっかりと画面一杯に表示される。これは困ったものだ・・・


 iOS8の新しいスプラッシュ画面設定 LaunchScreen

iOS8では、iPhone6, 6 Plusと画面サイズが異なる端末へ対応する為に、スプラッシュ画面を従来の画像を読み込む形式だけでなく、xibファイルでAutoLayoutなどを駆使してViewを配置し、それを表示する事が出来るようになりました。

Xcode6では、プロジェクトを作成した際に、LaunchScreen.xibというスプラッシュ画面用のxibファイルが生成され、そのファイルがInfo.plistの「Launch screen interface file base name」に設定されます。


 Xcode6の親切心によるワナ

そこで先程の画面サイズが小さくなる問題ですが、LaunchScreenが追加されたことが一つの要因になっているようです。

LaunchScreenは、iOS8以降の新機能でありiOS7の端末では利用することが出来ません。もし、iOS7でロンチ画像を設定する場合は、従来どおり画像を用いる必要があります。

しかしながら、Xcode6では、LaunchScreenがデフォルト設定なったことにより、従来の画像を使った設定が外れています。

そこが問題で、LaunchScreenだけ設定しているとiOS7端末ではスプラッシュ画像を見つけることが出来ません。


 Default-568h@2x.pngのことを覚えていますか?

では、何故スプラッシュ画像が無いことにより画面が小さくなってしまうのかということですが

小さくなってしまった画面のサイズを見ると、iPhone4(S)の3.5インチサイズで表示されており、3.5インチアプリとして認識されていることと推測出来ます。

かつて、iPhone5がリリースされたときには、4インチのスプラッシュ画像となるDefault-568h@2x.pngがプロジェクトに含まれているかどうかで、3.5インチアプリか4インチアプリかの判定がされていました。

Xcode5になり、スプラッシュ画像の設定がImageAssetへ変更されたことによってその名前を見る事はなくなりましたが、4インチ用のロンチ画面が設定されているかどうかで、3.5インチか4インチかどうかの判定はまだ残っているようです。


Xcode6でもiOS7で4インチアプリに対応させよう

Xcode6でも、以前と同様にスプラッシュ画像のImageAssetを設定してあげる事で、iOS7端末でも4インチアプリとして認識されます。

xcode6_launch_asset_catalog

xcode6_asset_catalog_migrate

プロジェクトファイルのLaunch Images Sourceに「Use Asset Catalog」というボタンが出ているので、それを押してスプラッシュ画像を追加するImageAssetを選択するだけです。

ios7_iphone5_4inch_xcode6_

これで、iOS7でも画面一杯に表示されるようになりました。

余談

ちなみに、LaunchScreenとLaunchImageを両方設定し、iOS8端末で起動するとLaunchScreenが優先されます。そういうことも合って、混乱を避ける為にデフォルトでLaunchImageが外されているみたいです。

また、Xcode6.1になったことでDevelopment TargetをiOS7以下に設定した際、LaunchImageが設定されていないとワーニングが出るようになりました。これで、同じようなトラブルに見舞われる人は減りそうですね、、、(欲を言えば勝手に追加してほしい・・・)

この記事を書いた人

タケシ
タケシ
プライベートは趣味で忙しいLegend先輩 アプリチームではヒカセンの加入をお待ちしております
Pocket