Xcode 5 になって変わった開発周りの微妙な違い

SPECIAL


開発環境が Xcode 4 から Xcode 5 に変わって気になったアプリ開発の違いを整理してみました。

iOS 7 の登場と合わせてリリースされた Xcode 5 ですけど、それまで使用していた Xcode 4 と比べて気になる違いがいくつかありました。

それらについて、現象とその対処方法を整理してみます。

ステータスバーがルートビューに重なるようになった

iOS 7 環境では、ステータスバーが原則的にルートビューに重ねて表示されるようになりました。

これは iOS 7 のレイヤーを重ねる発想とコンテンツを大事にコンセプトに依るもので、ステータスバーなどにも透明感を持たせ、その下のコンテンツの存在を示すのには不可欠な存在です。

iOS 7 And Later
iOS 6 And Earlier

ただ、iOS 6 と iOS 7 両対応の画面をデザインするとき、見た目だけでなくて座標も変わってくるので注意が必要です。

iOS 6 ではいちばん上を Y=0 でレイアウトすればいいのは変わらないのですが、iOS 7 の場合でステータスバーに重ねたくない場合は、iOS 6 のレイアウトから Y+=20 だけずらしてあげないといけません。

この iOS 6 と iOS 7 との違いは、Interface Builder でデルタ値を設定することで吸収することができます。

テーブルビューがステータスバーに重ならない場合がある

以前の Xcode 4 で作成したプロジェクトだからなのか、場合によっては UITableViewController のテーブルビューだけ、ステータスバーに重ねられずにレイアウトされる場合がありました。

デザイン的に他の UIViewController のビューとのバランスが悪い場合は、プログラムなどからテーブルビューのコンテンツ表示位置を微調整する必要がありそうです。

ボタンの画像が tintColor で塗りつぶされる

iOS 7 からデザインコンセプトが変更されて、いわゆるフラットデザインになりました。

UIButton もその影響を大きく受けて、標準スタイルは角丸からテキストだけに変更になりました。そこに設定する画像も tintColor で設定した単一色で塗りつぶされて、ボタンの印象はとても大きく変わります。

iOS 7 And Later
iOS 6 And Earlier

特に iOS 6 と iOS 7 の両方に対応しようと考えた場合、この UIButton の仕様の違いはけっこう頭を悩まされるところなので、それぞれの違いを意識しながらデザインを考えるのが大切そうです。

カスタムサイズのビューのサイズが勝手に狂う

サイズを Freeform に設定していた UIViewController を Xcode 5 で開いて編集すると、設定してあったサイズがおかしくなってしまうことがありました。

ステータスバーの表示状態をプログラムで変更するためのひと手間

iOS 6 まではステータスバーの表示状態を簡単に切り替えられましたけど、iOS 7 からは従前の方法だけでは切り替えできなくなっています。

アプリのレビューページを開こうとすると真っ白になる

iOS 6 系までは "itms-apps:" プロトコルを使って、目的のアプリのレビューページをスマートに開くことができました。

ところがこの方法は iOS 7.0 では使えなくなっていたので、別の良い方法を探してみました。