Ich möchte einen Fortschrittsbalken erstellen, der die Form eines Bogens hat. Die Farbe des Fortschrittsbalkens muss sich entsprechend den Werten ändern.Anwenden von Verlaufsfarbe auf Bogen, der mit UIBezierPath erstellt wurde
Ich erstellte einen Bogen mit UIBezierPath bezierPathWithArcCenter
. Ich habe den folgenden Code:
- (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"];
}
Das Ergebnis sieht wie folgt aus:
Meine Frage ist: Wie eine Steigung auf die Farbe anzuwenden, wenn das heißt der Wert < = 50% ist? Ich habe auch ein UIButton erstellt, das zufällige CGFloat-Nummern generiert, um es mit dem Fortschrittsbalken zu verbinden. Hat jemand eine Idee, wie man das anpackt?
Der Gradient würde wie folgt aussehen:
Jede mögliche Hilfe würde geschätzt!
Vielen Dank.
Granit
Vielen Dank! Es funktionierte wie ein Charme :) – Granit
Froh, dass es geholfen hat :) – djshiow
Das sieht nicht so aus, als würde es ** entlang ** den Pfad zeichnen, sondern vielmehr scheint es einen horizontalen Gradienten zu zeichnen, der durch den Pfad enthüllt wird . Ist das sinnvoll? Wie "biegen" Sie einen horizontalen Gradienten, um einem vollen Kreis zu folgen? – tracicot