アプリのiPhone5対応

今までのアプリをiPhone5の640x1136の縦長画面に対応させるために私がやったことのメモです。 (たぶんこれで大丈夫だと思うんですけど、何か問題があったら追記します。)

iPhone5画面サイズ対応

まず、アプリをiPhone5の640x1136サイズで起動するには、プロジェクトにこの画像ファイルを追加すること。(もちろん画像サイズは640x1136) Default-568h@2x.png

公式書類に一応書いてあるんですが、ちょっと記述がわかりづらいですね。(もうちょっとわかりやすくかいてくれてもいいと思うんですけど。) iOS App Programming Guide(App-Related Resources)

各画面のサイズ変更対応

次に、起動画面以外の各画面をiPhone5/iPhone4の両対応にするための変更です。

まずは、それぞれのxibファイルを開いて、ベースとなるviewの「Simulated Metrics」で「Retina 4 Full Screen」を設定。これで、画面サイズにあわせて自動的にリサイズされるようになります。 (2012/9/25追記。この設定をしなくても自動的にリサイズされるので、特にここは変更をしなくても大丈夫です。Murakamiさんにご指摘いただきました。)

それから、画面上のコントロールの位置や大きさが、画面サイズに応じて正しくレイアウトされるように設定。ここでは、画面の下部に表示されている広告エリアを「コントロールの左右と下のマージンを固定、上のマージンは可変。コントロールの幅は可変、高さは固定。」という設定にしています。 (Autosizingの図をクリックすると固定と可変を切り替えできます。)

xib/nibファイルをつかわずに動的に画面生成をしている場合には上記の処理は必要なし。ただしその場合はソースコード中のコントロールやViewの位置と大きさをscreen heightから取得しているかどうか確認しておきましょう。

armv7s対応

(これはiPhone5対応ではなく、Xcode4.5対応です) iPhone5の新しいCPUアーキテクチャへの対応が必要になりました。 これについては、HMDTの木下さんが詳しく書いていらっしゃるのでそちらを見てください。 iPhone 5からはarmv7sアーキテクチャ | HMDT Blog

armv7s非対応の外部ライブラリを使っている場合にはここの自力対応は無理なので、その場合にはおとなしくarmv7sを削除。

Target OS 4.3

(これもiPhone5対応ではなく、Xcode4.5対応です) Target OSとは、「このアプリがどのバージョンのiOS以上で動かせるか」という数字です。 Xcodeではこの数値が4.3以上のみにしか設定できないようになってしまったので、iPhone5対応をする場合にはTarget OSを4.2以下にできなくなってしまいました。 アプリによっては、OS4.2以下のユーザーさんを切り捨てることになり、古くから使っているユーザーさんが多いアプリにとっては苦渋の決断にもなりそうです。

iOS4.3にすることのできない端末はこちらです。

  • iPod touch(1st generation)
  • iPod touch(2nd generation)
  • iPhone
  • iPhone 3G

逆に言うと、これはAppleからの公式な「iPhone3G対応は終わりにしろ」命令でもあるんですよね……。

App Store関連の変更

今度からiPhone5用の画面キャプチャーが必要になりました。 今までiPhone用にアップロードしていたものと同じ内容の画面キャプチャーを、画面サイズを変更して作り直さないといけません。 (これが結構地味に面倒くさかったです……。)

あと、二ヶ月くらい前に、App Store登録時に1024 x 1024サイズのアプリアイコンが必要になっています。 登録していない場合には、そのファイルも追加する必要があります。

その他……

その他、そもそもコンパイラーがgccに設定してあって、「そんなコンパイラないから!」とかいわれたりなんかもしました。 (最近の人は知らないかもしれませんが、昔はllvmコンパイラでなくgccだったんですよ……。)

あと、iPhone5対応ではなくiOS6対応になるんですが、地図連携をしている場合には「iOS6でマップアプリを起動する」も見ておいてください。

古いソースコードもたまには手をいれてあげないと駄目ですね。