Force Rechts- / Linkslauf für eine CABasicAnimation einer UIImageView

Ich animiere ein Pendel, das von 0 Grad auf maximal 200 Grad und dann wieder zurück schwingt. Das Problem ist, dass wenn das Pendel über 180 Grad geht, es auf dem kürzesten Weg, der im Uhrzeigersinn fortgesetzt werden soll, auf 0 zurückkehrt. Und ich möchte, dass es gegen den Uhrzeigersinn geht. Hier ist mein Code: ('right' ist ein Boolescher Wert, der WAHR ist, wenn das Pendel von links nach rechts schwingt.)

 - (void)swingPendulum {
    CABasicAnimation *rotationAnimation;
    rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
    if (right) 
        rotationAnimation.toValue = [NSNumber numberWithFloat:degreesToRadians(kMax)];
    else
        rotationAnimation.toValue = [NSNumber numberWithFloat:degreesToRadians(kMin)];                               
    rotationAnimation.duration = 1.0;
    rotationAnimation.repeatCount = 1.0; 
    rotationAnimation.delegate = self;
    rotationAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
    rotationAnimation.removedOnCompletion = NO;

    [pendulum.layer addAnimation:rotationAnimation forKey:@"rotationAnimation"];
}

Haben Sie eine Idee, wie ich diese Arbeit machen kann? Es ist das letzte Teil meines Swingometer-Puzzles, das ansonsten großartig funktioniert: D Danke!

Michael

Antworten auf die Frage(8)

Ihre Antwort auf die Frage