我使用CAShapeLayer绘制一个圆圈并将其设置为CAGradientLayer的掩码,这里是代码:
CAShapeLayer *circleShapeLayer = [CAShapelayer new];
// draw circle path code here...
CAGradientLayer *gradientLayer = [CAGradientLayer layer];
gradientLayer.colors = @[(__bridge id)[UIColor whiteColor].CGColor,
(__bridge id)[UIColor clearColor].CGColor];
// self here means a UIView
gradientLayer.mask = circleShapeLayer;
gradientLayer.frame = self.bounds;
[self.layer addSublayer:gradientLayer];
当我运行应用程序时,它会显示一个渐变圆,但渐变很奇怪。
我想要的是一个圆圈,在起点,颜色是白色,在终点颜色是清晰的颜色,它应该是这样的:
但模拟器屏幕中圆圈的颜色为:
颜色是对称的。
我认为问题是我没有正确设置gradientLayer.colors
,我该如何解决?
答案 0 :(得分:1)
CAGradientLayer无法沿弧线绘制渐变。另一方面,掩模层的框架比渐变层的框架太小,看不到清晰的颜色
答案 1 :(得分:0)
对于Umair的回复,起初对我没有意义,因为即使whiteColor
或blackColor
被colorWithRed:green:blue:alpha
提取,但我在文档中读到了这一点:
渲染时,颜色会在插入之前映射到输出颜色空间。
所以也许这就是它:
gradientLayer.colors = @[(__bridge id)[UIColor colorWithRed:1.0f green:1.0f blue:1.0f alpha:1.0f].CGColor,
(__bridge id)[UIColor colorWithRed:1.0f green:1.0f blue:1.0f alpha:0.0f].CGColor];
答案 2 :(得分:0)