開発のヒホ

iOSとかAndroidとかのアプリを開発するのに四苦八苦するブログ

iOS7のナビゲーションバーの半透明をコード上で失くす

デベロッパーにとってはもうウンザリなiOS7対応ですが、
やっぱり対応しないと文句を言われるので、対応せざるを得ないです。

既存のアプリをiOS7で動かしたときに最も遭遇率が多いのは、
なんかしらんけどナビゲーションバー分だけ上がってることでしょう。

↓こんな感じで上に64pxほど上がる

f:id:hihokaruta:20130917184200p:plain

これは、ナビゲーションバーが透過扱いになっていることが原因です。
常に、いわゆるフルスクリーン状態となるみたいです。

これを失くす、つまりiOS6以前の挙動に戻すには次のコードを書き加えます。

- (void) viewDidLoad {
    self.navigationController.navigationBar.translucent = NO ;

    ...
}

self.navigationController.navigationBar.translucent = NO ;
これだけで透過を防ぐことができます。

挙動についての違いや、IB(インターフェイスビルダー)での解決策はこちらを参照。
iOS7の強制フルスクリーンに関するiOS6とiOS7のNavigationBarの挙動の違い