好久沒寫東西了湖饱,最近天天加班太可怕了- - 掖蛤。。井厌。
記錄一下CAGradientLayer蚓庭,感覺做一些效果的時(shí)候還是挺實(shí)用的。仅仆。器赞。
暫時(shí)只是用這個(gè)類做出漸變色的效果,其它的效果還沒太了解墓拜。港柜。。像這樣。夏醉。爽锥。
這是一個(gè)很單純的類。畔柔。氯夷。自身特有的屬性。靶擦。肠槽。很少。奢啥。。
首先說一下下面兩個(gè)屬性:
@property CGPoint startPoint;
@property CGPoint endPoint;
這兩個(gè)屬性決定了顏色漸變的方向嘴拢,引用網(wǎng)上的一張圖:(出處:http://blog.it985.com/7986.html)
從圖上我們很明顯地看出坐標(biāo)對(duì)于方向的影響桩盲,坐標(biāo)系統(tǒng)的參數(shù)的范圍是從0到1。startPoint代表起始方向坐標(biāo)點(diǎn)席吴,endPoint代表結(jié)束方向坐標(biāo)點(diǎn)赌结,兩個(gè)坐標(biāo)點(diǎn)決定了一個(gè)方向。例如你需要橫著的漸變色孝冒,設(shè)置startPoint(0,0),endPoint(0,1).這個(gè)坐標(biāo)系統(tǒng)和你的layer是什么形狀的并沒有關(guān)系柬姚,圓形、三角形之類的同樣應(yīng)用于這個(gè)坐標(biāo)系統(tǒng)庄涡。
有了色彩的方向量承,下面該說色彩的設(shè)置了,這里有兩個(gè)關(guān)鍵的屬性穴店,一個(gè)是顏色撕捍,另一個(gè)是顏色分割點(diǎn):
@property(nullable, copy) NSArray *colors;
@property(nullable, copy) NSArray<NSNumber *> *locations;
我對(duì)這兩個(gè)的理解如下:
這兩個(gè)屬性是對(duì)應(yīng)著使用的,顏色數(shù)組代表一組你想漸變的顏色泣洞,而顏色分割點(diǎn)代表著這個(gè)顏色漸變的區(qū)域(區(qū)域值是按坐標(biāo)系統(tǒng)劃分的忧风,0-1的范圍)。通過分割點(diǎn)我們就可以控制某個(gè)顏色所占的區(qū)域大小球凰。
舉個(gè)栗子狮腿,三組顏色值,淺灰,灰和黑:
self.gradientLayer.colors = @[(__bridge id)[UIColor lightGrayColor].CGColor,
(__bridge id)[UIColor grayColor].CGColor,(__bridge id)[UIColor blackColor].CGColor];
三個(gè)分割點(diǎn):
self.gradientLayer.locations = @[@(0.2f) ,@(0.5),@(1.0f)];
個(gè)人理解的是:這個(gè)對(duì)應(yīng)的效果應(yīng)該是淺灰色在坐標(biāo)系統(tǒng)的0.2-0.5部分漸變呕诉,0.2之前是純淺灰色缘厢,灰色在0.5-1.0部分過渡,黑色在1.0部分過渡义钉。顯示效果就是最開始的那張圖片昧绣。