CAGradientLayer 不能改变颜色

CAGradientLayer cannot change color

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

- (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;
}

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

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

图层使用图层蒙版蒙版通过在每个像素处使用蒙版的 alpha 来确定其自身内容的 alpha,因为您的 gradientLayer 是完全不透明的,所以您得到的效果不是你所希望的。

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