繁体   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