【问题标题】:How to add vertical Gradient color in UINavigationBar?如何在 UINavigationBar 中添加垂直渐变颜色?
【发布时间】:2018-05-11 06:00:04
【问题描述】:

我想在UINavigationBar 中添加渐变色。水平渐变的代码完美地工作,但对于垂直渐变,它没有显示正确的颜色。

提前谢谢!!!

我当前的垂直渐变代码:

extension UINavigationBar {
    /// Applies a background gradient with the given colors
    func applyNavigationGradient( colors : [UIColor]) {

        let gradientLayer = CAGradientLayer()
        gradientLayer.frame = self.bounds
        gradientLayer.colors = colors.map { $0.cgColor }

        // *** for horizontal gradient ***
        // gradientLayer.startPoint = CGPoint(x: 0.0, y: 0.5)
        // gradientLayer.endPoint = CGPoint(x: 1.0, y: 0.5)

        // *** for vertical gradient ***
        // gradientLayer.locations = [0,1]
        gradientLayer.startPoint = CGPoint(x: 0.5, y: 0.0)
        gradientLayer.endPoint = CGPoint(x: 0.5, y: 1.0)


        UIGraphicsBeginImageContext(gradientLayer.bounds.size)
        gradientLayer.render(in: UIGraphicsGetCurrentContext()!)
        let image = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()

         setBackgroundImage(image, for: UIBarMetrics.default)
     }
}

【问题讨论】:

    标签: ios uinavigationbar swift4 cagradientlayer


    【解决方案1】:

    swift 4.1 的工作代码。只需将以下内容放在确实加载的视图中:

    func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    
        let gradientLayer = CAGradientLayer()
        var updatedFrame = self.navigationController!.navigationBar.bounds
        updatedFrame.size.height += 20
        gradientLayer.frame = updatedFrame
        gradientLayer.colors = [UIColor.green.cgColor, UIColor.blue.cgColor]
        gradientLayer.startPoint = CGPoint(x: 0.5, y: 0.0) // vertical gradient start
        gradientLayer.endPoint = CGPoint(x: 0.5, y: 1.0) // vertical gradient end
    
        UIGraphicsBeginImageContext(gradientLayer.bounds.size)
        gradientLayer.render(in: UIGraphicsGetCurrentContext()!)
        let image = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
    
        self.navigationController!.navigationBar.setBackgroundImage(image, for: UIBarMetrics.default)
    }
    

    【讨论】:

    • 欢迎,如果这是您正在寻找的内容,请竖起大拇指并使其成为认可的答案 :)
    • 应该注意,这不适用于 iOS11 大标题选项,对于渐变,请查看:stackoverflow.com/questions/46196848/…
    猜你喜欢
    • 1970-01-01
    • 2013-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-20
    • 2017-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多