[英]How to apply CAGradientLayer as mask of another CALayer?
我有一個視圖,它有一個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.mask = gradient;
同
[self.layer insertSublayer:gradient atIndex:0];
然后我看到了漸變。 它是從黑色到白色。
有什么訣竅?
CALayer上的mask屬性使用遮罩層的alpha分量來確定應該可見的內容而不是。 由於您的兩種顏色(黑色和白色)都是完全不透明的(沒有透明度),因此蒙版無效。 要解決此問題,您應該將其中一種顏色更改為清晰的顏色:
gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor blackColor] CGColor],
(id)[[UIColor clearColor] CGColor], nil];
這就是“訣竅”:D
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.