[英]Gradient color effect on CAShapeLayer
我正在尝试在CAShapeLayer上应用渐变色。 为此我写代码,
-(void)addCircle{
{
// Drawing code
UIBezierPath *aPath = [UIBezierPath bezierPathWithArcCenter:CGPointMake(150, 150)
radius:125
startAngle:0
endAngle:DEGREES_TO_RADIANS(180)
clockwise:NO];
CAShapeLayer *shapeLayer = [[CAShapeLayer alloc] init];
[shapeLayer setFrame: self.frame];
[shapeLayer setPath: [aPath CGPath]];
shapeLayer.lineWidth = 30.0f;
[shapeLayer setStrokeColor:[[UIColor redColor] CGColor]];
shapeLayer.fillColor = [[UIColor clearColor] CGColor];
[shapeLayer setMasksToBounds:YES];
CAGradientLayer *gradientLayer = [CAGradientLayer layer];
gradientLayer.startPoint = CGPointMake(0.5,1.0);
gradientLayer.endPoint = CGPointMake(0.5,0.0);
gradientLayer.frame = CGRectMake(0, 0, self.bounds.size.width, self.bounds.size.height);
NSMutableArray *colors = [NSMutableArray array];
for (int i = 0; i < 10; i++) {
[colors addObject:(id)[[UIColor colorWithHue:(0.1 * i) saturation:1 brightness:.8 alpha:1] CGColor]];
}
gradientLayer.colors = colors;
[gradientLayer setMask:shapeLayer];
[self.layer addSublayer:shapeLayer];
}
但我没有像这样的渐变色输出,
我想要这样的最终输出,
但我的主要目标是在CAShapeLayer上应用渐变效果。 在我给出的代码中我错了什么?
主要的问题是你将shapeLayer
添加到视图的图层,但实际上你只想将它用作蒙版,所以你应该添加gradientLayer
。
接下来的问题是CAGradientLayer
不支持像第二个屏幕截图中那样的径向渐变。 您需要进行自定义绘制才能实现该效果(或仅使用图像)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.