2017-10-03 14 views
7

私のUIViewController(Swift 4)のいずれかでステータスバーを非表示にしようとしています。ステータスバーを隠すswift 4

  • まず、私はInfo.plistYESビューコントローラベースのステータスバーの外観を設定します。私は私のコントローラでprefersStatusBarHiddenプロパティオーバーライド


override var prefersStatusBarHidden: Bool { 
    return true 
} 

  • そしてviewDidLoad()では、私は読むことがprefersStatusBarHiddenプロパティを強制的にsetNeedsStatusBarAppearanceUpdate()機能を追加しました。

結局のところ、私はまだUIViewControllerにステータスバーが表示されています。

誰かが私を助けてくれますか?

+0

はたぶん、あなたはいくつかのコードを追加した場合、答え – Kalamarico

+0

このHTTPSを見作るために参考になっなります:// stackoverflowの.com/questions/38876249/cant-hide-status-bar-swift-3/38876435#38876435 –

+0

@ Anbu.Karthikあなたがリンクしてきた答えは、OPが既に行ったことです。 – the4kman

答えて

0

は、プロジェクトの設定の一般セクションの下ステータスバーを非表示をチェックしてみます。

Hide status bar option under Project settings/General

+0

回答ありがとうございますが、カスタムUIViewControllerのためにアプリケーション全体のステータスバーを非表示にする必要はありません。 –

+0

この設定は、最初はステータスバーを隠すだけで、このような多くの場合にステータスバーが非表示になるようにします。 – the4kman

6

あなたは、このコードを追加して、ビューコントローラのいずれかまたは全てのステータスバーを非表示にすることができます:

override var prefersStatusBarHidden: Bool { 
    return true 
    } 

そのコードを含む任意のビューコントローラは、デフォルトでは、ステータスバーを非表示にします。あなたのビューコントローラ上の

あなたがinまたはoutステータスバーをアニメーションにしたい場合は、単に(setNeedsStatusBarAppearanceUpdateを呼び出す) - 再び読み取ることがprefersStatusBarHiddenを強制されます、あなたは別の値を返すことができ、その時点で。必要に応じて、への呼び出しsetNeedsStatusBarAppearanceUpdate()は、実際にはアニメーションブロック内にあることがあり、ステータスバーがスムーズに隠れたり表示されたりします。

+0

OPはすでに 'prefersStatusBarHidden'を設定しています。 – the4kman

+0

私はviewDidLoad()でもUIApplication.shared.isStatusBarHidden = trueであっても、そのすべてを試みましたが、ステータスバーはまだそこにあります...私は速い4チェンジログを読んで、prefersStatusBarHiddenを変更することについて何もしていません.. –

+0

私がスウィフト4のプロジェクトは上記のオーバーライドだけを追加し、それ以外のものは追加しませんでした。 Info.plistファイルを変更する必要はありません。setNeedsStatusBarAppearanceUpdate()を呼び出す必要はありません – ffabri

0

これらのどれも、iOS 11の変換プロジェクトで働いていませんでした。ここで私がしたことがあります。 AppDelegateでこのコードを追加しました

func application(_ application: UIApplication, 
    didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool 
{ 
    application.isIdleTimerDisabled = true 
    application.isStatusBarHidden = true 
    return true 
} 
2

Info.plistの "View controller-based status bar appearance"フラグをYESに設定してみてください。これにより、すべてのView ControllerでprefersStatusBarHidden: Boolプロパティに呼び出されます。

View controller-based status bar appearance flag

1

これは私がiOS11で働いている見つかった唯一のもので、次のコード UIApplication.shared.isStatusBarHidden = true

を使用してください。 didFinishLaunchingWithOptionsまたはあなたの 'viewWillAppear'に書くことができますBaseViewController お楽しみください。

2

あなたはおそらくすでにこれに対する独自の解決策を見つけたが、私はそれがこの方法を働いてしまった:

override func viewWillAppear(_ animated: Bool) { 
    // Sets the status bar to hidden when the view has finished appearing 
    let statusBar: UIView = UIApplication.shared.value(forKey: "statusBar") as! UIView 
    statusBar.isHidden = true 
} 

override func viewWillDisappear(_ animated: Bool) { 
    // Sets the status bar to visible when the view is about to disappear 
    let statusBar: UIView = UIApplication.shared.value(forKey: "statusBar") as! UIView 
    statusBar.isHidden = false 
} 
関連する問題