Я пытаюсь применить градиентные цвета на 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. Где я ошибаюсь в своем коде?
** Добавление подслоев внутри 'drawRect:' определенно неверно. ** –
Это, как говорится, вы смешиваете два разных подхода к рисованию. Один из них - пользовательский рисунок в drawRect: и один из них - слои. Независимо от того, какой подход вы выберете, вам придется сделать рисунок в несколько шагов, добавив тени и замаскировав белый градиент. Не могли бы вы прояснить, с чем у вас проблемы? –
@ DavidRönnqvist, Во-первых, я очень счастлив показать мне свою ошибку. Я хочу применить цветовые эффекты градиента к кругу красного цвета. Посмотрите мое второе изображение, я хочу создать тот же эффект. На самом деле я не знаю, как создать круг конца выходного измерительного прибора, но я предполагаю, что тонкий белый цвет на втором изображении похож на слой градиента, и поэтому я выбрал этот сценарий. – Tirth