2016-01-12 93 views
0

我想要一个彩色渐变来覆盖我的视图。在一个视图控制器,我有这个代码CAGradientLayer无法更改颜色

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

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

回答

2

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

由于您的gradientLayer是完全不透明的,所以您得到的效果不是您希望的效果,所以图层使用图层蒙版蒙版通过使用每个像素蒙版的alpha值来确定它们自己的内容的阿尔法。 。

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

+0

一个解释掩码的设置可能是很好的,所以OP知道为什么它变成了黑色:) – Losiowaty

+1

我扩展了@Losiowaty建议的答案 – EmilioPelaez