按矩形区域画线 CAShapeLayer 图层颜色

Draw line CAShapeLayer layer color by rect region

我现在面临的问题是,在我通过CAShapeLayer绘制点和线之后,我需要通过改变矩形区域的不同来修改它们的两种颜色。我现在设置的区域有四个部分,下面是示例代码:

- (void)drawChartWithRecord:(Chart *)Chart
                           lineWidth:(CGFloat)lineWidth
                              radius:(CGFloat)radius
                            interval:(CGFloat)interval
                                rect:(CGRect)rect {

    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSaveGState(context);        
    float start_angle = 0;
    float end_angle = (float) (2 * M_PI);

    CAShapeLayer *avg = [CAShapeLayer layer];
    avg.path = [UIBezierPath bezierPathWithArcCenter:CGPointMake(X,Y) radius:radius startAngle:start_angle endAngle:end_angle clockwise:YES].CGPath;

    CGContextMoveToPoint(context, X, Y);
    CGContextAddLineToPoint(context, pastX, pastY);
    CGContextSetStrokeColorWithColor(context, LINE_COLOR);
    CGContextSetLineWidth(context, lineWidth);
    CGContextStrokePath(context);

    [self.layer addSublayer:avg];
}

基于线和点代码;但是,我没有找到任何方法将矩形导入同一个 CAShapeLayer。如果我创建一个新图层

CAShapeLayer *mask = [CAShapeLayer layer];

如果我使用

会有问题
[self.layer addSublayer:mask];

两个子图层会混合,我不想更改我的背景颜色。

感谢大家的帮助:)

不幸的是,我的问题错了。

我想要的东西 CAGradientLayer & CAShapeLayer 可以轻松解决。完成自己的 CAShapeLayer 后,使用

[self.gradientLayer setMask:avgCircle];

您可以轻松地将自己的渐变颜色添加到线条形状中CAShapeLayer

务必为 CAGradientLayerCAShapeLayer

添加 addSublayer: