簡體   English   中英

如何應用CAGradientLayer作為另一個CALayer的掩碼?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM