2013年9月14日土曜日

iOS7対応: iOS6/7 delta



iOS7ではStatusBar、NavigationBarとアプリのViewがオーバラップして表示されるため、Xcode5のstoryboardで配置したViewの位置がiOS6/7で違ってしまう。

ViewのframeのルートViewに対するframe.origin.yの値が0の場合、iOS6ではStatusBar、NavigationBarの下に配置されるが、iOS7ではスクリーンの左上に配置される。

autolayoutの場合は調整してくれるようだが、そうでない場合は調整が必要になる。
Interface BuilderのサイズインスペクタにあるiOS6/7 deltaで行うことができる。

Xcode5ではこまめ表示/非表示ができるので、上のキャプチャーの少し上にあるViewのhideをクリックすると、この部分がすっかり隠れてしまいます。

iPhoneのUITableViewでは、iOS6と同じ設定だとiOS7ではViewの上にNavigationBar分の空きができる。この場合はiOS7の場合にcontentInsetのtopを-44にするとiOS6と同じレイアウトになる。

参考: Interface Builder: What are the UIView's Layout iOS 6/7 Deltas for?

0 件のコメント: