根据下面的内容更改状态栏的颜色

change color of status bar according to content beneath it

我们确实有很多关于将状态栏变成白色的问题,但我想知道如何根据状态栏下方的内容将其变成白色或黑色,就像 iOS 9 的音乐应用一样, 是否可以使用任何 api 动态地进行此更改,或者我是否必须手动决定状态栏的颜色?

这就是我现在将它变成白色的方式(这不是我想要的):

info.plist 中将 NO 分配给此 View controller-based status bar appearance。然后在我的 app delegate's didFinishLaunchingWithOptions :

UIApplication.shared.statusBarStyle = .lightContent

您必须手动决定状态栏颜色。您可以检查状态栏的背景是否较暗然后显示浅色内容样式。

您可以通过以下代码检查 UIColor 是否变暗。

extension UIColor
{
    func isLight() -> Bool
    {
        let components = CGColorGetComponents(self.CGColor)
        let brightness = ((components[0] * 299) + (components[1] * 587) + (components[2] * 114)) / 1000

        if brightness < 0.5
        {
            return false
        }
        else
        {
            return true
        }
    }
}

如果您需要帮助或有任何疑问,请告诉我。