CAGradientLayer无法改变颜色

时间:2016-01-12 17:49:56

标签: ios calayer

我想要一个彩色渐变来覆盖我的视图。在视图控制器中,我有这段代码

- (void)viewDidLoad {
  self.view.backgroundColor = [UIColor whiteColor];

  CAGradientLayer *gradientLayer = [CAGradientLayer layer];
  gradientLayer.frame = self.view.bounds;
  gradientLayer.colors = [NSArray arrayWithObjects:(id)[UIColor redColor].CGColor, (id)[UIColor clearColor].CGColor, nil];
  gradientLayer.startPoint = CGPointMake(0, 0);
  gradientLayer.endPoint = CGPointMake(0, 1.0f);
  self.view.layer.mask = gradientLayer;
}

但即使第一种颜色是红色,我也只能看到黑色渐变。如何显示红色渐变?

1 个答案:

答案 0 :(得分:2)

TLDR:不要将渐变设置为图层蒙版,而是将渐变图层添加为view.layer的子图层。

图层使用图层蒙版蒙版通过使用每个像素的蒙版的alpha来确定自己内容的alpha,因为gradientLayer完全不透明,你得到的效果不是你的那个希望能够。

图层类似于视图(视图实际上是图层的包装),您可以将它们添加为子图层,其方式与将视图添加为子视图的方式类似。