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
是完全不透明的,所以您得到的效果不是你所希望的。
图层类似于视图(视图实际上是图层的包装器),您可以将它们添加为子图层,其方式类似于将视图添加为子视图。
我想要彩色渐变来覆盖我的视图。在视图控制器中,我有这段代码
- (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
是完全不透明的,所以您得到的效果不是你所希望的。
图层类似于视图(视图实际上是图层的包装器),您可以将它们添加为子图层,其方式类似于将视图添加为子视图。