意外に簡単? 4インチスクリーン対応

iPhone5に対応したXcodeのバージョン、4.5が正式に登場した。
Xcode 4 Downloads and Resources - Apple Developer

変更点は色々とあるのだが、なにより気になるのは

  • iOS6(iPhone5)対応は?
  • 旧アプリも含めた4インチディスプレイへの対応は?

だと思う。私は面倒なのは嫌いなのだがさすがはApple作業は非常に簡単だった。

iOS6(iPhone5)対応

Xcode 4.5はデフォルトでiOS6(iPhone5)に対応しており、インストール直後ではiOSシミュレータもiOS6.0のものが起動される。ただし、iPhone4/4Sの3.5inchとiPhone5の新しい4.0inchのどちらが使われるかはプロジェクト次第である。

新しいiPhone5 4inch Retina Display用シミュレータ

勿論旧シミュレータもダウンロード、インストールできるがApple恒例でありサポートしているのは5.1と5.0つまり二つ前のバージョンまでだ。(ファイルがそろっていればインストールはできるのかもしれないが)

旧アプリはそのまま動く?

私はiOS6の実機を持っていないので実機では分からないのだが、Xcodeでは基本そのままビルド※1が通るし、4インチのRetina用シミュレータを使ってアプリケーションを起動しても問題なく動く。そしてこれは以前から指摘されていたことだが、iPhone4用のビルドされたアプリケーションは4インチのシミュレータでは上下が切れて従来のままのスクリーンサイズで動く。従ってアプリケーションに修正は必要ない。

従来のアプリケーションではHDに対応していないTVでHD画像を表示した時のように上下が帯上に切れる。

ここはiPadの2xモードのようにサイズに合わせて画面を縦に伸張する、上か下に寄せて表示するなど、色々とやり方があったと思うが、開発者にとってはアプリケーションを一切変えずにiOS6でも動作するのが一番有り難い、というかアプリケーションのリリースに審査が必要なプラットホームではこうしないと駄目だったのだろう。

4インチ対応は?

新規のプロジェクト(Storyboard有効)であれば既に4インチ対応は完了している。xibファイルも4インチ用として初期化されているので、すぐにiOS6用のアプリケーションが書ける。

それまでのXcodeで書いてきたiPhone4用のアプリケーションをiPhon5でもきちんと(上下空けずに)動かすにはどうすれば良いのか? これがまた簡単なのである。

1. 4inchデバイス向けのスプラッシュ画面を作る

このように640x1136ピクセルのスプラッシュ画像を作り、名前を"Default-568h@2x.png"とする。("Default-568h@2x.png"という名前でファイルをプロジェクトに追加すると上のSSのように自動的にRetina4inch用として登録されて、4inch向けの画面が容易されていると判断するようだ)

2. 4inchに対応したxibを用意する
Storyboardを使用している場合は、右下に3.5inch/4inchを切り替えるためのアイコンがある。

大きさ自体はこのアイコンをタップすることで切り替えられるので、縦長のレイアウトで画面を再設計すれば良い。iPhone5では縦に長くなっただけなのでテーブルの行が増えるだけのようなビジネス/ユーティリティ系アのプリケーションでは再設計の必要は殆ど無いだろう。

以上だ。たったこれだけ行ってビルドするだけで従来のアプリケーションを取りあえずiPhone5対応とすることができる。※2

なお、今回よりステータスバーはデフォルトで画面の色に合わせて色を変えるように振る舞いが変わっている。
上の例であればナビゲーションバーの一番下部のピクセルの色が使われているとのことだ。


以上はMac OS X 10.8.2、Xcode 4.5 ARC On、Storyboard有効での検証。

※1コンパイラとデバッガのデフォルトはそれぞれLLVMとLLDBとなった。
※2 当然だが言語使用や他のXcodeの互換性の問題が動かない(ビルドが通らない)ことはあるだろう。