Estoy animando un brazo de reloj que apunta hacia las 12 en punto a la hora actual. Si es así, a las 11 en punto, quiero que el brazo gire en el sentido de las agujas del reloj hasta la posición de las 11 en punto. Pero por supuesto si uso:Gire un UIView en el sentido de las agujas del reloj para un ángulo superior a 180 grados
CGAffineTransform rotation = CGAffineTransformMakeRotation(2*M_PI*11/12);
[UIView animateWithDuration:3.0
animations:^{
clockArm.transform = rotation;
}];
la rotación va en sentido antihorario. Probé:
CGFloat angle = 2*M_PI*11/12;
CGAffineTransform firstRotation = CGAffineTransformMakeRotation(M_PI-0.001);
CGFloat firstRotationTime = 3.0*(M_PI/angle);
CGAffineTransform secondRotation = CGAffineTransformMakeRotation(angle);
CGFloat secondRotationTime = 3.0 - firstRotationTime;
[UIView animateWithDuration:firstRotationTime
delay:0.0
options:UIViewAnimationCurveLinear
animations:^{
self.clockArm1.transform = firstRotation;
}
completion:^(BOOL finished) {
[UIView animateWithDuration:secondRotationTime
delay:0.0
options:UIViewAnimationCurveLinear
animations:^{
self.clockArm1.transform = secondRotation;
}
completion:^(BOOL finished){
}];
}];
La animación no ir hacia la derecha, pero no es claro - la animación todavía parece estar haciendo un UIViewAnimationEaseInOut por primera animación. ¿Qué estoy haciendo mal, o hay otra forma de lograr lo que quiero?
Tenga una mirada en la respuesta aceptada de http://stackoverflow.com/questions/9844925/uiview-infinite -360-degree-rotation-animation. ¿Eso ayuda? –