プログラミング

【iOS】特定の画面のみ ステータスバーを非表示にする

swift-eyecatch

例えば、何かしらの一覧画面がありそこから詳細画面に遷移する場合を想定します。その時、一覧画面では、ステータスバーは通常の表示で問題ないが、詳細画面に遷移したときには非表示にしたい、といったときがあるかと思います。

ステータスバーとは、画面の最上部に、「時刻」「通信状況」「電池残量」などを表示してくれている部分のことです。

実装自体はそんなに難しいことはなく、とてもシンプルです。

流れとしては、info.plistに各ViewControllerごとに表示/非表示を変更できるように設定し、非表示にしたいViewControllerで非表示にするコードを記述する、これだけです。

Info.plistの編集

ステータスバーをViewControllerごとに表示/非表示を切り替える設定項目を追加します。

View controller-based status bar appearanceYESを設定します。

ちなみに、info.plistを右クリックすると、「Open as」を選択出来ますので、「Source Code」もしくは、「Property List」が選択出来ます。

「Source Code」で開いた場合は、xml形式でinfo.plistを開くことが出来ます。実態はこちらですね。

<key>UIViewControllerBasedStatusBarAppearance</key>
<true/>

これを</dict>のすぐ上に記述すればOKです。もちろん「Property List」形式でクリックしながら選択して追加していっても問題ありません。

ViewControllerでの設定

次にステータスバーを非表示にしたいViewControllerで次の記述を追加します。

override var prefersStatusBarHidden: Bool {
    return true
}

以上です。

シンプルな要件の場合だとこれだけで事足ります。