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

- (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是完全不透明的,因此获得的效果并非您所希望的。

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

关于ios - CAGradientLayer无法更改颜色,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34750523/

10-09 09:59