2016-08-08 9 views
1

Проблема, с которой я сталкиваюсь сейчас, заключается в том, что после того, как я нарисую точки и линии 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]; 
} 

После кода линии и точек; однако я не обнаружил никакого способа импортировать прямоугольник в тот же CAShapeLayer. Если я делаю новый слой

CAShapeLayer *mask = [CAShapeLayer layer]; 

Там будет проблема, если я использую

[self.layer addSublayer:mask]; 

Два из подслоя смешивались, и я не хочу, чтобы изменить цвет фона.

Спасибо за помощь каждого:)

ответ

0

К сожалению, я был неправ мой вопрос.

вещь, которую я хочу, может быть легко решить CAGradientLayer & CAShapeLayer. После того, как вы закончите свой CAShapeLayer, используя

[self.gradientLayer setMask:avgCircle];

вы можете легко добавить в свой собственный цвет градиента к форме линии CAShapeLayer

Обязательно добавьте addSublayer: для обоих CAGradientLayer & CAShapeLayer