UINavigationControllerのナビゲーションバーを表示/非表示を動的に切り替える方法としては、UINavigationController#setNavigationBarHiddenメソッド
を使います。
// ナビバーの表示を切り替える if let nv = navigationController { let hidden = !nv.navigationBarHidden nv.setNavigationBarHidden(hidden, animated: true) }
下図ではナビゲーションバーにはアプリ名と設定ボタンが表示されています。
前述のUINavigationController#setNavigationBarHiddenメソッド
を使うことでナビゲージョンバーを非表示にすることができます。
実行してみるとナビゲーションバーはうまく消えましたが、ステータスバーの部分が真っ白になってしまいました!
ステータスバーの背景色が真っ白になってしまっている
これは背面にいるViewControllerの背景色が白いためです。このアプリでは、背面から前面にかけて下記のような作りになっています。
- UIWindow
- UINavigationController
- HomeViewController
- FriendViewController
- HomeViewController
- UINavigationController
背面にあるHomeViewControllerの背景色が表示されていますので、下記のようにview.backgroundColorに適当な色を設定します。
override func viewDidLoad() { super.viewDidLoad() self.view.backgroundColor = UIColor.purpleColor() // 省略... }
実行すると下図のようにステータスバーに背景色がつきます。
ここでは単色を設定していますが、親となるViewControllerに画像を追加しているアプリもあるようです。