通过rect区域绘制线条CAShapeLayer图层颜色

时间:2016-08-08 03:43:36

标签: objective-c layer cashapelayer

我现在面临的问题是,在我通过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];
}

使用线和点代码;但是,我没有找到任何方法将rect导入同一个CAShapeLayer。如果我将新图层设为

CAShapeLayer *mask = [CAShapeLayer layer];

如果我使用

,就会出现问题
[self.layer addSublayer:mask];

其中两个子图层会混合,我不想改变背景颜色。

感谢大家的帮助:)

1 个答案:

答案 0 :(得分:0)

不幸的是,我对自己的问题错了。

我想要的东西很容易通过CAGradientLayer& CAShapeLayer。完成自己的CAShapeLayer后,使用

[self.gradientLayer setMask:avgCircle];

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

请务必为addSublayer:&添加CAGradientLayer CAShapeLayer