Xcode 14でステータスバーを非表示にする方法
いつのも流れで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 回タップするとステータスバーが再び表示されます。
ステータスバーをアプリ上で常に非表示にするのはアンチパターンのようで、ステータスバーを非表示にしているようなアプリは画面をタップしたりすることで再表示したりするような工夫をする必要がありそうですね。