微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

什么是CALayer和CAGradientLayer?

如何解决什么是CALayer和CAGradientLayer?

任何人都可以用简单的语言解释什么是CALayer和CAGradientLayer,以及如何以编程方式实现以下渐变。

我想以编程方式实现此渐变颜色:

gradient

解决方法

我建议您对CALayerCAGradientLayer进行一些搜索,以了解它们的用途以及使用方法。

但是,举一个非常简单的例子...

CAGradientLayer使用颜色数组(CGColor类型),位置数组(颜色应更改的百分比)以及起点和终点相结合。

因此,要获得颜色渐变,您需要一个颜色数组:

[.purple,.blue,.green,.yellow,.red]

一系列位置:

[0.0,0.2,0.4,0.6,1.0]

,您想从顶部开始并在底部结束:

gradLayer.startPoint = CGPoint(x: 0.5,y: 0.0)
gradLayer.endPoint = CGPoint(x: 0.5,y: 1.0)

这是一个简单的例子:

class ViewController: UIViewController {
    
    let gradLayer = CAGradientLayer()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let myColors: [UIColor] = [.purple,.red]
        
        // assign the colors (we're using map to convert UIColors to CGColors)
        gradLayer.colors = myColors.map({$0.cgColor})
        
        // locations can be considered Percentages
        // so,0.2 is 20%,0.4 is 40%,etc
        gradLayer.locations = [0.0,1.0]
        
        // start at the top
        gradLayer.startPoint = CGPoint(x: 0.5,y: 0.0)
        
        // end at the bottom
        gradLayer.endPoint = CGPoint(x: 0.5,y: 1.0)

        view.layer.addSublayer(gradLayer)
        
    }
    
    override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
        // layers do not auto-size,so update the frame
        gradLayer.frame = view.bounds
    }

}

结果:

enter image description here

播放位置和颜色以查看差异。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。