效果圖:
代碼片段:
-(void)createView
{
self.backgroundColor=[UIColor grayColor];
//漸變layer
CAGradientLayer *gradienLayer=[CAGradientLayer layer];
[self.layer addSublayer:gradienLayer];
gradienLayer.frame=CGRectMake(0, 200, self.frame.size.width, 64);
gradienLayer.colors=@[
(__bridge id)[UIColor blackColor].CGColor,
(__bridge id)[UIColor whiteColor].CGColor,
(__bridge id)[UIColor redColor].CGColor
];
gradienLayer.locations=@[@0.25,@0.5,@.75];
//漸變方向
gradienLayer.startPoint=CGPointMake(0, .5);
gradienLayer.endPoint=CGPointMake(1, .5);
}
說(shuō)明:
? colors屬性是設(shè)置CAGradientLayer的漸變顏色(此Demo是從黑-->白-->黑)炉峰。
locations屬性是相對(duì)于colors設(shè)置的,此Demo中l(wèi)ocations值的含義是按顏色漸變方向劃分,從(0 -> 0.25)部分是黑色,從(0.25 -> 0.5)部分是黑到白的漸變過(guò)程,以此類(lèi)推0.75的含義兵琳。
注意
1.CAGradientLayer默認(rèn)的漸變方向是從上到下,即垂直方向。
2.colors是個(gè)NSArray類(lèi)型统阿,只能存對(duì)象,所以需要將CGColor轉(zhuǎn)換一下筹我,此屬性可設(shè)置多個(gè)值(1個(gè)扶平,2個(gè),3個(gè)等...蔬蕊,都行)结澄,此Demo的滑動(dòng)解鎖效果只需要兩種顏色的漸變,所以設(shè)置了三個(gè)值岸夯,實(shí)際值可根據(jù)需求設(shè)置麻献。
3.設(shè)置好colors要設(shè)置好與之相對(duì)應(yīng)的locations值
4.如果要改變CAGradientLayer的漸變方向,則要顯式的給startPoint
和endPoint兩個(gè)屬性賦值猜扮。改為水平方向赎瑰,則需要改成
gradientLayer.startPoint = CGPointMake(0,0.5);? ? ? ? ??
? gradientLayer.endPoint = CGPointMake(1,0.5)
startPoint,endPoint原理解析
既然CAGradientLayer可以繪制出漸變顏色的效果破镰,那自然有顏色漸變的方向餐曼,所以這兩個(gè)屬性的作用就是設(shè)置顏色漸變的起始點(diǎn)和結(jié)束點(diǎn),這兩個(gè)屬性共同決定了顏色漸變的方向: