Я хочу создать индикатор выполнения, который имеет форму дуги. Цвет индикатора выполнения должен измениться в соответствии со значениями.
Я создал дугу, используя 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, чтобы связать его с индикатором выполнения. Кто-нибудь есть идея, как справиться с этим?
Градиент будет выглядеть примерно так:
Любая помощь будет оценена!
Большое спасибо.
Гранит