0

ナビゲーションコントローラスタック内のプッシュされたviewControllerの1つをナビゲーションバーとステータスバーなしで「フルスクリーン」にします。私も隠れてる同じのViewControllerでUINavigationControllerスタック内の1つのUIViewControllerのナビゲーションバーとステータスバーを非表示にする

override func viewWillAppear(_ animated: Bool) { 
    super.viewWillAppear(animated) 
    self.navigationController?.setNavigationBarHidden(true, animated:animated) 
} 

override func viewWillDisappear(_ animated: Bool) { 
    super.viewWillDisappear(animated) 
    self.navigationController?.setNavigationBarHidden(false, animated:animated) 
} 

: 私は隠し、ナビゲーションコントローラ(私はそれがフルスクリーンにプッシュしたい)のビューコントローラのいずれかで、ナビゲーションバーを示し、このコードを持っていますこれでステータスバー:それは隠し、期待通りに示したが、問題は、このビューコントローラをプッシュして戻ってからの時に、私は移行にブラックストライプを得ることです

override var prefersStatusBarHidden: Bool { 
    return true 
} 

(画像を参照)。このコントローラへ

プッシュ: Push to this controller

とバックこのコントローラ(戻るボタン)から:

Back from this controller

問題を解決し削除するためprefersStatusBarHidden機能のこれが起こっている表示されます。

表示/ナビゲーションバーがから取られ隠すためのコード: https://stackoverflow.com/a/2406167/4207465

とリンゴの開発者のライブラリに基づいて: は、「ナビゲーションバーを表示と非表示 - ナビゲーションバーをと組み合わせて使用​​される場合ナビゲーションコントローラーを使用する場合は、常にUNDavigationControllerのsetNavigationBarHidden:animated:メソッドを使用してナビゲーションバーを表示および非表示にします... "

なぜそれが起こっているのかよく分かりません、 助けてくれてありがとう!

+0

はこれが調査し、この問題を解決削除するためprefersStatusBarHiddenで起こっている表示されますなぜ.. .. –

答えて

0

viewDidAppearのナビゲーションバーを非表示にしてください。今、コントローラを表示する前にバーを隠しています。

func viewDidAppear(_ animated: Bool) { 
    super. viewDidAppear(animated) 
    self.navigationController?.setNavigationBarHidden(true, animated: animated) 
} 
+0

ありがとう、しかし、これは実際には、アニメーションも見知らぬ人になります.. –

1

@Boazフレンケル

非表示とステータスバーの有無にかかわらず、ナビゲーションバーのショーの間に黒いストリップを解決する一つの解決策があります。

のViewController A:フルスクリーン表示

override func viewWillAppear(animated: Bool) { 
    self.navigationController?.setNavigationBarHidden(true, animated: animated) 
    super.viewWillAppear(animated) 
} 

override func viewDidAppear(animated: Bool) { 
    UIApplication.sharedApplication().setStatusBarHidden(true, withAnimation: .Fade) 
    super.viewDidAppear(animated) 
} 

のViewController B:NavigationBarと、ステータスバーで

override func viewWillAppear(animated: Bool) { 

    self.navigationController?.setNavigationBarHidden(false, animated: animated) 
    UIApplication.sharedApplication().setStatusBarHidden(false, withAnimation: .None) 
    super.viewWillAppear(animated) 
} 
関連する問題