2012-05-30 59 views
20

我有一個看法,它有一個CALayer。當我創建CAGradientLayer並將其作爲該視圖的CALayer的蒙版應用時,沒有任何反應。爲什麼?如何將CAGradientLayer作爲另一個CALayer的掩碼?

在-initWithFrame:認爲我這樣做:

CAGradientLayer *gradient = [CAGradientLayer layer]; 
gradient.frame = self.bounds; 
gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor blackColor] CGColor], (id)[[UIColor whiteColor] CGColor], nil]; 
//[self.layer insertSublayer:gradient atIndex:0]; 
self.layer.mask = gradient; 

如果我

[self.layer insertSublayer:gradient atIndex:0]; 

更換

self.layer.mask = gradient; 

然後我看到了梯度。從黑色到白色。

訣竅是什麼?

+0

對於其他人來說,隨着梯度面具的鬥爭,它不會工作,如果應用到'UIStackView '。 –

回答

33

CALayer上的mask屬性使用掩碼圖層的alpha組件確定應該顯示而不顯示的內容。由於您的顏色(黑色和白色)都是完全不透明的(不透明),所以面具無效。爲了解決這個問題,你應該改變顏色的一個清晰的彩色:

gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor blackColor] CGColor], 
              (id)[[UIColor clearColor] CGColor], nil]; 

這就是「絕招」:d

相關問題