Примените цвет градиента к дуге, созданной с помощью UIBezierPath

Я хочу создать индикатор выполнения, который имеет форму дуги. Цвет индикатора выполнения должен меняться в зависимости от значений.

Я создал дугу, используяUIBezierPath bezierPathWithArcCenter, Я использовал следующий код:

- (void)viewDidLoad
{
    [super viewDidLoad];

    int radius = 100;

    CAShapeLayer *arc = [CAShapeLayer layer];

    arc.path = [UIBezierPath bezierPathWithArcCenter:CGPointMake(100, 50) radius:radius startAngle:60.0 endAngle:0.0 clockwise:YES].CGPath;

    arc.position = CGPointMake(CGRectGetMidX(self.view.frame)-radius,
                                  CGRectGetMidY(self.view.frame)-radius);

    arc.fillColor = [UIColor clearColor].CGColor;
    arc.strokeColor = [UIColor purpleColor].CGColor;
    arc.lineWidth = 15;

    [self.view.layer addSublayer:arc];

    CABasicAnimation *drawAnimation = [CABasicAnimation animationWithKeyPath:@"strokeEnd"];
    drawAnimation.duration            = 5.0; // "animate over 10 seconds or so.."
    drawAnimation.repeatCount         = 1.0;  // Animate only once..
    drawAnimation.removedOnCompletion = NO;   // Remain stroked after the animation..
    drawAnimation.fromValue = [NSNumber numberWithFloat:0.0f];
    drawAnimation.toValue   = [NSNumber numberWithFloat:10.0f];
    drawAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
    [arc addAnimation:drawAnimation forKey:@"drawCircleAnimation"];

}

Результат выглядит так:

Мой вопрос: как применить градиент к цвету, если значение <= 50%? Я также создал UIButton, который генерирует случайные числа CGFloat, чтобы связать его с индикатором выполнения. У кого-нибудь есть идеи, как с этим бороться?

Градиент будет выглядеть примерно так:

Любая помощь будет оценена!

Большое спасибо.

Granit

Ответы на вопрос(2)

Ваш ответ на вопрос