Pro*_*ber 21 core-animation calayer ios 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;
Run Code Online (Sandbox Code Playgroud)
如果我更换
self.layer.mask = gradient;
Run Code Online (Sandbox Code Playgroud)
同
[self.layer insertSublayer:gradient atIndex:0];
Run Code Online (Sandbox Code Playgroud)
然后我看到了渐变.它是从黑色到白色.
有什么诀窍?
Dav*_*ist 37
CALayer上的mask属性使用遮罩层的alpha分量来确定应该可见的内容而不是.由于您的两种颜色(黑色和白色)都是完全不透明的(没有透明度),因此蒙版无效.要解决此问题,您应该将其中一种颜色更改为清晰的颜色:
gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor blackColor] CGColor],
(id)[[UIColor clearColor] CGColor], nil];
Run Code Online (Sandbox Code Playgroud)
这就是"诀窍":D