Xcode 14でステータスバーを非表示にする方法

2022.10.18

いつのも流れでXcodeからステータスバーを非表示にしようとしたところ、「あれ?チェックボックスがないぞ」と思ったので対応方法を記載しておきます。

環境

  • Xcode 14

Xcode 13系での非表示方法

TARGETS > General > Deployment Info > Status Bar Styleの箇所にHide status barのチェックボックスがあり、こちらを選択し、Info.plistのView controller-based status bar appearanceのKeyをNOにすることでステータスバーを非表示にすることが出来ていました。

Xcode 14での非表示方法

同じように TARGETS > General > Deployment Info > Status Bar Styleの箇所を見てみると、Hide status barのチェックボックスが無くなっていました。

この箇所からは設定できなくなっているので、Info.plistで値を設定してあげます。

  • View controller-based status bar appearance
    • NO
  • Status bar is initially hidden
    • YES

こちらのKeyValueを追加することで、ステータスバーを非表示にすることが出来ました。

おまけ

コードでステータスバーを非表示にする方法です。

UIKit

override var prefersStatusBarHidden: Bool {
    return true
}

SwiftUI

iOS 13.0-16.1

Text("example")
    .statusBar(hidden: true)

iOS 13.0-

.statusBar(hidden:)は、非推奨となっている為、statusBarHidden(_:)を使う方が良さそうです。引数にはデフォルトでtrueが渡されるので何も記述しない場合は、非表示になります。

Text("example")
    .statusBarHidden()

おわりに

公式のStatus barsのデザインのガイドラインを確認すると、

ステータス バーを永久に非表示にしないでください。ステータス バーがないと、時間を確認したり、Wi-Fi 接続があるかどうかを確認したりするために、ユーザーはアプリを離れなければなりません。シンプルで見つけやすいジェスチャーで非表示のステータスバーを再表示できるようにします。たとえば、写真アプリで全画面表示の写真を閲覧している場合、1 回タップするとステータスバーが再び表示されます。

ステータスバーをアプリ上で常に非表示にするのはアンチパターンのようで、ステータスバーを非表示にしているようなアプリは画面をタップしたりすることで再表示したりするような工夫をする必要がありそうですね。

参考