objective framework developer apple objective-c core-animation calayer

objective-c - framework - swift ios documentation



Rotando un CALayer 90 grados? (5)

Básicamente algo así:

CGAffineTransform rotateTransform = CGAffineTransformMakeRotation(M_PI / 2.0); [myCALayer setAffineTransform:rotateTransform];

EDITAR: girará en sentido horario o antihorario según la plataforma (iOS o Mac OS).

¿Cómo puedo rotar un CALayer 90 grados? Necesito rotar todo, incluyendo subcapas y el sistema de coordenadas.


Obj-C:

theLayer.transform = CATransform3DMakeRotation(90.0 / 180.0 * M_PI, 0.0, 0.0, 1.0);

Rápido:

theLayer.transform = CATransform3DMakeRotation(90.0 / 180.0 * .pi, 0.0, 0.0, 1.0)

Es decir, transformar la capa de tal manera que gire 90 grados (π / 2 radianes), con el 100% de esa rotación teniendo lugar alrededor del eje z.


Para girar 90 ''a la derecha:

myView.transform = CGAffineTransformMakeRotation(M_PI_2);


Rab mostró cómo hacerlo con un objeto CAAnimation . En realidad es más simple que eso:

[myView animateWithDuration: 0.25 animations: ^{ myView.transform = CGAffineTransformMakeRotation(M_PI/2); } ];

(Levantando la línea de transformación de la respuesta de Chris, demasiado perezoso para volver a escribirla porque ya proporcionó el código perfecto).

El código de Chris giraría la vista sin animación. Mi código de arriba hará lo mismo con la animación.

Por defecto, las animaciones son fáciles de usar, facilitan la sincronización. Puede cambiar eso con una versión un poco más compleja de la llamada animateWithDuration (Use animateWithDuration:delay:options:animations:completion: lugar, y pase el tiempo deseado en el parámetro de opciones).


Si lo estoy animando, uso algo como esto en mis aplicaciones:

- (NSObject *) defineZRotation { // Define rotation on z axis float degreesVariance = 90; // object will always take shortest path, so that // a rotation of less than 180 deg will move clockwise, and more than will move counterclockwise float radiansToRotate = DegreesToRadians( degreesVariance ); CATransform3D zRotation; zRotation = CATransform3DMakeRotation(radiansToRotate, 0, 0, 1.0); // create an animation to hold "zRotation" transform CABasicAnimation *animateZRotation; animateZRotation = [CABasicAnimation animationWithKeyPath:@"transform"]; // Assign "zRotation" to animation animateZRotation.toValue = [NSValue valueWithCATransform3D:zRotation]; // Duration, repeat count, etc animateZRotation.duration = 1.5;//change this depending on your animation needs // Here set cumulative, repeatCount, kCAFillMode, and others found in // the CABasicAnimation Class Reference. return animateZRotation; }

Por supuesto, puede usarlo en cualquier lugar, no tiene que devolverlo desde un método si no se ajusta a sus necesidades.