puede animar una capa a través de uno (o más) rotaciones completas alrededor de su eje Z por la animación de transform.rotation
ruta de la clave de la capa, como este:
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
animation.duration = .25;
animation.fromValue = [NSNumber numberWithFloat:0];
animation.toValue = [NSNumber numberWithFloat:2 * M_PI];
[layer addAnimation:animation forKey:animation.keyPath];
puede animar alrededor de la X o ejes Y utilizando las rutas clave transform.rotation.x
y transform.rotation.y
. (La ruta de clave transform.rotation.z
tiene el mismo efecto que la ruta de clave transform.rotation
). Puede aplicar rotaciones múltiples, en ejes separados, simultáneamente.
Otra manera de hacerlo, lo que probablemente funciona mejor si se desea girar alrededor de un vector fuera del eje, es el uso de una animación de fotogramas clave, como esto:
CALayer *layer = [sender layer];
CATransform3D transform = CATransform3DIdentity;
transform.m34 = 1.0/-50;
layer.transform = transform;
CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"transform"];
animation.values = [NSArray arrayWithObjects:
[NSValue valueWithCATransform3D:CATransform3DRotate(transform, 0 * M_PI/2, 100, 1, 100)],
[NSValue valueWithCATransform3D:CATransform3DRotate(transform, 1 * M_PI/2, 100, 1, 100)],
[NSValue valueWithCATransform3D:CATransform3DRotate(transform, 2 * M_PI/2, 100, 1, 100)],
[NSValue valueWithCATransform3D:CATransform3DRotate(transform, 3 * M_PI/2, 100, 1, 100)],
[NSValue valueWithCATransform3D:CATransform3DRotate(transform, 4 * M_PI/2, 100, 1, 100)],
nil];
animation.duration = 2;
[layer addAnimation:animation forKey:animation.keyPath];
¿Estás tratando de girar 180 o 360 grados ? Porque creo que girar 360 grados es lo mismo que no rotar en absoluto. – htinlinn
@htinlinn Creo que está tratando de animar su capa a través de una rotación completa de 360 grados. –
@robmayoff ah. De acuerdo. – htinlinn