Status barの背景色を設定する

Androidのステータスバーはダークモードの設定を行うとNavigationBarの色よりちょっとくらい色になりますが、iosでもAndroidのダークモードのようなレイアウトを実装することになったので調べてみました。

UIApplicationのExtensionを作る

extensionを実装してstatusBarの背景色を変更できるようにします。

extension UIApplication {
    var statusBarView: UIView? {
        if responds(to: Selector("statusBar")) {
            return value(forKey: "statusBar") as? UIView
        }
        return nil
    }
}

NavigationBarの色はアプリで統一されていることが多いと思うので全体の一括設定を入れました。

UIApplication.shared.statusBarView?.backgroundColor = UIColor.red

ダークモードの色を設定する際はAndroid Studioでの色を確認して同じ色を上記のコードで設定を行いました。

実行時の見た目

NavigationBarなし

NavigationBarあり

問題点

原因がよくわかっていないのですが、Control center を閉じた際にStatusBarの背景色の描画が一瞬遅れてしまいます。

Appleも公式にサポートしていないので絶対に背景色を変えたい!という思いがないのであれば背景色は設定しないほうがいいような気がします。

参考文献

・How to change the status bar background color and text color on iOS 7?