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

标签 ios swift3 uistatusbar

关于将状态栏变为白色,我们确实有很多问题,但我想知道如何根据状态栏下方的内容将其变为白色或黑色,就像 iOS 9 的音乐应用程序一样,是否可以制作这会随任何 api 动态变化,还是我必须手动决定状态栏的颜色?

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

info.plist 中,将 NO 分配给此 View controller-based status bar appearance。然后在我的 app delegate 的 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 - 根据下面的内容更改状态栏的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39755932/

相关文章:

ios - 将 AVPlayerViewController 放在 UIView 中

ios - 如何使用函数选择UITableViewCell而不点击它?

iphone - iOS 7 状态栏问题

ios - 如何在 MoreTabBarController 中将 UIStatusBar 颜色更改为 .lightContent

ios - 圆角不适用于除 iPhone XS max 和 XR 以外的所有模拟器

ios - 在 NavigationBar 中单击 UISearchBar 时没有任何反应

ios - 设置UILabel的背景为透明黑色

ios - 在 iOS 设备锁定时保持应用程序运行?

iphone - 如何在iOS App Store Sandbox中测试自动续订订阅的 "renew"组件?

ios - UIPopoverController 应防止通过状态栏滚动