2017-05-22 9 views
0

私は、ステータスバーを非表示にするには次のコード行を使用します。ステータスバーを非表示にできないのはなぜですか?

view.window?.windowLevel = UIWindowLevelStatusBar

何私はこのコード行がviewの「ライフサイクル」のいずれかの方法の中からは動作しませんされていることは驚くべきことです:viewDidLoad(),viewWillAppear(:)。しかし、ボタンを作成してアクションメソッドに接続すると、上のコードは完全に機能し、ウィンドウの後ろにステータスバーが隠れます。 にview.window?.windowLevel = UIWindowLevelStatusBarと電話することができます。誰も私がなぜview "ライフサイクル"の方法の中で動作しないのか理解するのを助けてくれますか?

答えて

1

viewDidLoadでもviewWillAppearでも、ビューコントローラはビ​​ュー階層にありません。したがって、view.windownilです。

viewDidAppearを使用して回避するか、代わりにUIApplication.shared.delegate.windowを使用してウィンドウにアクセスすることができます。

一般に、メインウィンドウのlevelを変更するのは良い考えではありません。

+0

ウィンドウを「レベル変更」するのが悪い場合は、モーダル表示コントローラのステータスバーを隠すべきですか? –

+0

@ A.Jamコントローラを作成してステータスバーを非表示にするか、新しいウィンドウを作成してコントローラ/ビューを表示することができます。 – Sulthan

+0

どのようにしてView Controllerをステータスバーに隠すようにしますか?私はいくつかの研究が何も見つけることができなかったので、メソッドが組み込まれていますか? –

0

infoControlでView controller-based status bar appearanceをYESに設定すると、ViewControllerはステータスバーを調整することができます。それ以外の場合は、plistまたはprojファイルのグローバルパラメータによって設定されます。

+0

私は、ステータスバーを調整しようとしていないのです。ステータスバーと同じレベルにアプリウィンドウを設定しようとしています。私は 'View controller-based status bar appearance 'を' YES'に変更して何も起こらなかった。 –

0

あなただけのステータスバーの使用を非表示にしたい場合:

[[UIApplication sharedApplication] setStatusBarHidden:YES] 
関連する問題