我使用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
,我该如何解决?
3 回答
CAGradientLayer无法沿弧绘制渐变 . 另一方面,掩模层的框架比渐变层的框架太小,看不到清晰的颜色
一开始对Umair 's response, it didn' t有意义,因为即使
whiteColor
或blackColor
被colorWithRed:green:blue:alpha
提取,但我在文档中读到了这个:所以也许这就是它:
@ J.Hunter的answer是正确的,因为
CAGradientLayer
不能沿弧线绘制 . 这意味着您绘制的渐变将限制为 radial 和 linear . 你特意想要创建一个 angled 渐变,我过去也试过这个渐变 .不幸的是,
CAGradientLayer
受这些限制的约束,我发现创建蒙版角度渐变的最佳方法是使用包含倾斜渐变的UIImage
进行遮罩 . 这不会像绘制自己的渐变那样动态,但它似乎是目前最好的(可能是唯一的)选项 .