Animation 什么是CALayer和CAGradientLayer?

Animation 什么是CALayer和CAGradientLayer?,animation,storyboard,calayer,swift5,xcode11,Animation,Storyboard,Calayer,Swift5,Xcode11,任何人都可以用简单的语言解释什么是CALayer和CAGradientLayer,以及我如何通过编程实现以下渐变 我希望通过编程实现此渐变颜色: 我建议您搜索一下CALayer和CAGradientLayer,了解它们是什么,以及如何使用它们 然而,对于一个非常简单的例子 cGradientLayer使用一个颜色数组(CGColor类型),与一个位置数组(颜色应改变的百分比)以及起点和终点相结合 因此,要获得颜色渐变,需要一组颜色: [.purple, .blue, .green, .yello

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

我希望通过编程实现此渐变颜色:


我建议您搜索一下
CALayer
CAGradientLayer
,了解它们是什么,以及如何使用它们

然而,对于一个非常简单的例子

cGradientLayer
使用一个颜色数组(
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, .blue, .green, .yellow, .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, 0.2, 0.4, 0.6, 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
    }

}
结果:


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

hey@DonMag谢谢你的回答,你能告诉我一些关于viewDidLayoutSubviews()函数的信息吗,比如什么时候调用它,调用了多少次?@YuvrajAgarkar-这是iOS开发的基础。最好的办法是阅读文档。