根据下面的内容更改状态栏的颜色
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
}
}
}
如果您需要帮助或有任何疑问,请告诉我。
我们确实有很多关于将状态栏变成白色的问题,但我想知道如何根据状态栏下方的内容将其变成白色或黑色,就像 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
}
}
}
如果您需要帮助或有任何疑问,请告诉我。