Learning CALayer Part1: CAGradientLayer

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


D4764B1D-722B-4193-A5DA-3BC7E66D86CA.png

從坐標(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)

上邊代碼繪制了一個從上到下 黃色到紅色的一個漸變


43870FB7-1C65-43ED-A508-37B3A66528FE.png

我們也可以再添加一個漸變顏色 只要在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é)果是這樣:


DB0DF171-E38D-49D2-89D7-EB31AB651252.png

如果要繪制一個從左上到右下的顏色漸變,只要修改一下 startPoint和 endPoint

  layer.startPoint = CGPointMake(0, 0)
  layer.endPoint = CGPointMake(1, 1)

運行一下結(jié)果是這樣:


4676742E-69E8-4D29-A50A-47DB323EFCDF.png

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

EFC07B89-DC79-4D1C-B361-6E534B1F99C2.png
609D612E-190A-43BC-A845-01EEF8220687.png
  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!

gradientLayer.gif

步驟很簡單
1.創(chuàng)建三個CAGradientLayer,分別將三個layer添加到baseView上
2.將baseView設(shè)置成catalinaView的maskView (maskView屬性是在iOS8中添加的,功能類似layer的mask屬性)
3.為gradientLayer分別添加動畫

Demo下載地址

如果寫的有什么不足的地方,歡迎大家留言或私信與我溝通,我會及時做出更正

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容