web-dev-qa-db-ja.com

ステータスバーを非表示にできない—Swift 3

私は通常、ステータスバーを非表示にします

override func prefersStatusBarHidden() -> Bool {
    return true
}

しかし、Xcodeは「メソッドはそのスーパークラスから何もオーバーライドしません」というエラーを出しています。

overrideを削除すると、Xcodeは別のエラーを返します。「Objective-Cセレクター「prefersStatusBarHidden()」のメソッド「prefersStatusBarHidden()」は、同じObjective-Cセレクターのスーパークラス「UIViewController」の「prefersStatusBarHidden」のゲッターと競合します」


また、ターゲットの一般設定で「ステータスバーを隠す」にチェックマークが付いています。

enter image description here

ただし、ステータスバーは引き続き表示されます。


私は別のスタックオーバーフローの答えでこのメソッドを見つけました

UIApplication.shared.setStatusBarHidden(true, with: .none)

ただし、ステータスバーは非表示になりません。


Xcode 8 Beta 1では、1番目と2番目のメソッドを使用しましたが、これらはステータスバーを非表示にする働きをしました(最初のメソッドはエラーを返しませんでした)。 Xcode 8 Beta 4でステータスバーを非表示にするにはどうすればよいですか?

注:ステータスバーは、すべてiOS 10を実行しているシミュレーターデバイスと物理デバイスに表示されます。

46
owlswipe

Swift 3のプロパティ自体をオーバーライドする必要があります(これはXcode 8 Beta 4の新機能です)。

override var prefersStatusBarHidden: Bool {  
    return true  
}  

別の例では、 here および here を取得することもできます

この変更が何であるか、なぜそれが必要なのかについては、 Mattのこれに関するすばらしい回答 を参照してください。

109
Anbu.Karthik