Ios 如何将CAGradientLayer应用为另一个CALayer的遮罩?
我有一个视图,它有一个CALayer。当我创建一个CAGradientLayer并将其应用为该视图CALayer的遮罩时,什么都没有发生。为什么? 在视图的-initWithFrame中,我执行以下操作:Ios 如何将CAGradientLayer应用为另一个CALayer的遮罩?,ios,core-animation,calayer,cagradientlayer,Ios,Core Animation,Calayer,Cagradientlayer,我有一个视图,它有一个CALayer。当我创建一个CAGradientLayer并将其应用为该视图CALayer的遮罩时,什么都没有发生。为什么? 在视图的-initWithFrame中,我执行以下操作: CAGradientLayer *gradient = [CAGradientLayer layer]; gradient.frame = self.bounds; gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor blackC
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;
与
然后我看到了梯度。从黑到白
诀窍是什么?CALayer上的mask属性使用遮罩层的alpha组件来确定哪些应该可见,哪些不应该。因为你的两种颜色(黑色和白色)都是完全不透明的(没有透明度),所以遮罩没有效果。要解决此问题,应将其中一种颜色更改为清晰的颜色:
gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor blackColor] CGColor],
(id)[[UIColor clearColor] CGColor], nil];
这就是“诀窍”:D对于其他难以使用渐变遮罩的人来说,如果应用于
UIStackView
,它将不起作用。
gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor blackColor] CGColor],
(id)[[UIColor clearColor] CGColor], nil];