HOME > アプリ開発 > [iOS7][Xcode5]ナビゲーションバーの下にView要素が潜ってしまう場合の対処法

[iOS7][Xcode5]ナビゲーションバーの下にView要素が潜ってしまう場合の対処法

iOS6で開発していたアプリをXcode5で開きビルドするとナビゲーションバーがある画面に対してはView要素がナビゲーションバーに潜ってしまって、全体的に画面要素が上にずれてしまいます。

その対処法について紹介します。

原因はiOS 7から追加されたedgesForExtendedLayout

iOS7からedgesForExtendedLayoutプロパティのせいで、iOS6まではナビゲーションバーの部分は表示領域として含まれていませんでしたが、iOS7の磨りガラス公開と合わせてナビゲーションバーのエリアもView要素の表示エリアとして拡張されたせいで、iOS6までのView要素がナビゲーションバーの下に潜り込んでしまう状態になります。

対処法(iOS6の場合と同じレイアウトを維持する方法) 対処法はedgesForExtendedLayoutを無効にすれば今までどおりの表示レイアウトになります。

self.edgesForExtendedLayout = UIRectEdgeNone;

実際はif文でiOS7のバージョンの時のみ適用するというのがよいと思います。

float iOSVersion = [[[UIDevice currentDevice] systemVersion] floatValue];
//iOS 7.0以上の場合
if(iOSVersion >= 7.0) {
    self.edgesForExtendedLayout = UIRectEdgeNone;
}

ご注意

その代わりiOS7にて追加されたすりガラスの表現的な表現(ナビゲーションバーが曇りガラスのようになり裏側でわずかに透けて見える表現)が無効になりますので御注意ください。