如何为状态栏设置渐变颜色

Posted

技术标签:

【中文标题】如何为状态栏设置渐变颜色【英文标题】:How to set Gradient color for statusbar 【发布时间】:2017-12-26 08:27:58 【问题描述】:

代码:

extension UIApplication 
    class var statusBarBackgroundColor: UIColor? 
        get 
            return (shared.value(forKey: "statusBar") as? UIView)?.backgroundColor
         set 
            (shared.value(forKey: "statusBar") as? UIView)?.backgroundColor = newValue
        
    


UIApplication.statusBarBackgroundColor = .blue

我正在尝试单独为状态栏设置渐变颜色。如何更改我的代码以设置渐变颜色。任何帮助将不胜感激。提前致谢

【问题讨论】:

你是指只有状态栏还是状态栏+导航栏? 仅状态栏.. 【参考方案1】:

这就是我的管理方式。

let gradientLayer = CAGradientLayer()

    gradientLayer.frame = CGRect(x:0, y:-20, width:375, height:64)
    let colorTop = UIColor(red: 69/255, green: 90/255, blue: 195/255, alpha: 1.0).cgColor
    let colorBottom = UIColor(red: 230/255, green: 44/255, blue: 75/255, alpha: 1.0).cgColor
    gradientLayer.colors = [ colorTop, colorBottom]
    gradientLayer.locations = [ 0.0, 1.0]
    gradientLayer.frame = CGRect(x:0, y:-20, width:375, height:self.view.frame.height * 0.06)

    let window: UIWindow? = UIApplication.shared.keyWindow
    let view = UIView()
    view.backgroundColor = UIColor.clear
    view.translatesAutoresizingMaskIntoConstraints = false
    view.frame = CGRect(x: 0, y: 0, width: (window?.frame.width)!, height: self.view.frame.height * 0.07)
    view.layer.addSublayer(gradientLayer)
    window?.addSubview(view)

那只会给状态栏后面的视图添加渐变

【讨论】:

因为我隐藏了导航控制器你的解决方案不起作用 当您隐藏导航控制器时,我已经编辑了答案

以上是关于如何为状态栏设置渐变颜色的主要内容,如果未能解决你的问题,请参考以下文章

如何为导航栏设置 CAGradientLayer 动画

在android中动态设置状态栏颜色

如何在android中将状态栏背景设置为渐变色或drawable

Android沉浸式状态栏 + scrollView顶部伸缩 + actionBar渐变

Android设置状态栏颜色和状态栏文字、图标颜色

在导航栏和状态栏上设置渐变