状态栏背景颜色不会更改为自定义颜色

Sai*_*aev 1 colors statusbar ios uistatusbar swift

当我将状态栏的背景色更改为本机UIColor.gray时,它也会更改。但是,当我要使用自定义颜色时,它会变成黑色。

UIApplication.shared.statusBarView?.backgroundColor = UIColor.gray-此代码正常工作。状态栏背景颜色为灰色

UIApplication.shared.statusBarView?.backgroundColor = UIColor(red: 30/255, green: 30/255, blue: 30/255, alpha: 1)-此代码无法正常工作。状态栏背景颜色为黑色

小智 5

首先,在info.plist文件中设置基于View控制器的状态栏外观属性。

然后在AppDelegate类的didFinishLaunchingWithOptions方法中添加以下代码。

if let status = UIApplication.shared.value(forKey: "statusBar") as? UIView {
        status.backgroundColor = UIColor.init(red: 173.0/255.0, green: 173.0/255.0, blue: 44.0/255.0, alpha: 1)
     }

UIApplication.shared.statusBarStyle = .lightContent
Run Code Online (Sandbox Code Playgroud)

希望这对您有帮助。


Kru*_*nal 5

希望这对您在 Swift 4 中有所帮助。看起来像是一个黑客技巧,但确实有效。

您可以在应用程序启动期间或视图控制器的 viewDidLoad 期间设置状态栏的背景颜色。

extension UIApplication {

    var statusBarView: UIView? {
        return value(forKey: "statusBar") as? UIView
    }

}

// Set upon application launch, if you've application based status bar
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        UIApplication.shared.statusBarView?.backgroundColor = UIColor.red
        return true
    }
}


or 
// Set it from your view controller if you've view controller based statusbar
class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

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

}
Run Code Online (Sandbox Code Playgroud)



这是结果:

在此输入图像描述