CAGradientLayer是CALayer的子類,通常我們用它最多的地方是用來做漸變色插爹,下面我們來看一下它的屬性
colors:漸變顏色的集合哄辣,這是一個數(shù)組请梢,里面裝的是漸變色的顏色,而且顏色不是UIColor而是CGColor力穗,所以我們還需要進行類型轉(zhuǎn)換
locations:這是定義漸變色的顏色位置的區(qū)間范圍溢陪,其值在0到1之間,并且這里面的數(shù)組個數(shù)必須和colors里面的顏色數(shù)組個數(shù)一樣睛廊,另外這個數(shù)組里面的數(shù)值必須是遞增的形真,不然漸變色的分割線特比明顯,幾種顏色看起來沒有過渡
startPoint:漸變色開始的地方超全,這里的默認值是(0.5咆霜,0)
endPoint:漸變色結(jié)束的地方,這里的默認值是(0.5嘶朱,1)
具體的使用代碼:
_gradientLayer = [CAGradientLayer layer];
_gradientLayer.frame = self.view.bounds;
//這里必須是CGColor不然沒有顏色蛾坯,且要在前面加入__bridge id進行類型轉(zhuǎn)換
_gradientLayer.colors = [NSArray arrayWithObjects:(__bridge id)[UIColor purpleColor].CGColor,(
![Uploading Simulator Screen Shot 2017年5月9日 11.40.44_268950.png . . .]__bridge id)[UIColor redColor].CGColor, nil];
_gradientLayer.locations = [NSArray arrayWithObjects:[NSNumber numberWithFloat:0.65],[NSNumber numberWithFloat:1], nil];
_gradientLayer.startPoint = CGPointMake(0.0, 0);
_gradientLayer.endPoint = CGPointMake(0.0, 1);
[self.view.layer addSublayer:_gradientLayer];
效果:
這里開始位置是(0,0)疏遏,結(jié)束位置是(0脉课,1),即開始到結(jié)束的位置是豎直的财异,那么顏色的放置的位置就是水平的倘零。
如果我們把開始和結(jié)束的位置換一下看看效果:
再換一下,換成對角線的看看:
這樣我們會發(fā)現(xiàn)一個規(guī)律戳寸,顏色放置的線和開始結(jié)束形成的線是垂直的呈驶,既成90度
然后我們來看一下location數(shù)組如果不是遞增的會發(fā)生什么情況:
我們把location的代碼改成下面這樣子:
_gradientLayer.locations = [NSArray arrayWithObjects:[NSNumber numberWithFloat:0.65],[NSNumber numberWithFloat:0.3], nil];
這樣不是遞增的我們來看一下效果:
這樣我們看到這兩種顏色之間的分界特別明顯,因此location里 面的數(shù)組一定要是遞增的
如果有時候我們給一個view設(shè)置一個覆蓋整個view的漸變層疫鹊,結(jié)果發(fā)現(xiàn)出來的漸變色只有一部分袖瞻,此時我們可以改變一下漸變層的錨點,把它的錨點設(shè)為(0拆吆,0)聋迎,因為錨點默認為(0.5,0.5)所以有時候錨點可能會影響