2016-01-12 96 views
0

我想要一個彩色漸變來覆蓋我的視圖。在一個視圖控制器,我有這個代碼CAGradientLayer無法更改顏色

- (void)viewDidLoad { 
    self.view.backgroundColor = [UIColor whiteColor]; 

    CAGradientLayer *gradientLayer = [CAGradientLayer layer]; 
    gradientLayer.frame = self.view.bounds; 
    gradientLayer.colors = [NSArray arrayWithObjects:(id)[UIColor redColor].CGColor, (id)[UIColor clearColor].CGColor, nil]; 
    gradientLayer.startPoint = CGPointMake(0, 0); 
    gradientLayer.endPoint = CGPointMake(0, 1.0f); 
    self.view.layer.mask = gradientLayer; 
} 

但即使第一種顏色是紅色,我只會看到一個黑色的漸變。我怎樣才能顯示一個紅色的漸變呢?

回答

2

TLDR:不是將漸變設置爲圖層蒙版,而是將漸變圖層添加爲view.layer的子圖層。

由於您的gradientLayer是完全不透明的,所以您得到的效果不是您希望的效果,所以圖層使用圖層蒙版蒙版通過使用每個像素蒙版的alpha值來確定它們自己的內容的阿爾法。 。

圖層與視圖類似(視圖實際上是圖層的包裝),您可以將它們添加爲子圖層,其方式與將視圖添加爲子視圖的方式類似。

+0

一個解釋掩碼的設置可能是很好的,所以OP知道爲什麼它變成了黑色:) – Losiowaty

+1

我擴展了@Losiowaty建議的答案 – EmilioPelaez