CAGradientLayer是CALayer的子類,它能夠繪制一個漸變層
除了繼承自父類的屬性外,CAGradientLayer還有下邊幾個自己的屬性
colors :顏色數(shù)組,用來填充漸變的顏色
locations:是一個坐標(biāo)數(shù)組,用來顯示漸變開始的位置 參數(shù)是 0-1
endPoint:漸變結(jié)束的位置 默認值是(0.5,1)參數(shù)是 0-1
startPoint: 漸變開始的位置 默認值是(0.5,0)參數(shù)是 0-1

從坐標(biāo)圖可以看出 (0,0)為左上角 (1, 1)為右下角
type: 漸變繪制的樣式,默認是 kCAGradientLayerAxial(也只有這一種樣式,所以壓根不用設(shè)置)
Demo:
let layer = CAGradientLayer()
layer.frame = CGRect(x: 0, y: 0, width: 200, height: 200)
layer.position = self.view.center
layer.colors = [UIColor.yellowColor().CGColor,UIColor.redColor().CGColor] layer.locations = [0.3]
layer.startPoint = CGPointMake(0.5, 0)
layer.endPoint = CGPointMake(0.5, 1)
self.view.layer.addSublayer(layer)
上邊代碼繪制了一個從上到下 黃色到紅色的一個漸變

我們也可以再添加一個漸變顏色 只要在colors數(shù)組中再添加一個顏色 ,注意colors數(shù)組中的參數(shù)為CGColorRef 類型,記得要將UIColor轉(zhuǎn)換一下
layer.colors = [UIColor.yellowColor().CGColor,UIColor.redColor().CGColor, UIColor.blueColor().CGColor]
再修改一下新的漸變顏色開始的位置
layer.locations = [0.3, 0.6]
這里的意思是從0.3位置開始到紅色過度,從0.6開始到藍色過度
運行一下結(jié)果是這樣:

如果要繪制一個從左上到右下的顏色漸變,只要修改一下 startPoint和 endPoint
layer.startPoint = CGPointMake(0, 0)
layer.endPoint = CGPointMake(1, 1)
運行一下結(jié)果是這樣:

在創(chuàng)建了一個CAGradientLayer后 我們就可以用它來做一點其他事啦 ~~
給jinx添加一個帶有漸變的遮罩層:


let layer = CAGradientLayer()
layer.frame = imageView.bounds
layer.colors = [UIColor.blackColor().CGColor,UIColor.clearColor().CGColor] layer.locations = [0.1]
layer.startPoint = CGPoint(x: 0.5, y: 0.2)
layer.endPoint = CGPoint(x: 0.5, y: 1)
imageView.layer.mask = layer
創(chuàng)建了一個CAGradientLayer 然后傳給 layer的mask屬性
也可以創(chuàng)建一個帶有漸變的切換動畫, jinx 變身 ~ catalina!

步驟很簡單
1.創(chuàng)建三個CAGradientLayer,分別將三個layer添加到baseView上
2.將baseView設(shè)置成catalinaView的maskView (maskView屬性是在iOS8中添加的,功能類似layer的mask屬性)
3.為gradientLayer分別添加動畫
如果寫的有什么不足的地方,歡迎大家留言或私信與我溝通,我會及時做出更正