Pregunta

Necesito rotar un UIImage en respuesta a la entrada del usuario. Me gustaría que esto sea lo más hábil posible y, por lo tanto, me gustaría saber cuál es la forma más rápida de realizar la transformación y el renderizado. Idealmente, me gustaría permanecer dentro de los marcos UIKit o Quartz. Las propiedades de la imagen son las siguientes:

  • Tamaño aproximado de 250x300 píxeles
  • No opaco: debe renderizarse con un canal alfa

¿Cuáles son los mejores enfoques y prácticas para implementar esta funcionalidad?

Nota: Hay un enfoque descrito en este stackoverflow responder pero no estoy seguro si esto es óptimo. Por supuesto que lo intentaré, pero me gustaría saber si esto se considera la "mejor práctica".

¿Fue útil?

Solución

Este ejemplo de aplicación de una capa de animación principal a un UIImage puede proporcionar algo de inspiración:

UIImage* rotatingImage = [UIImage imageNamed:@"someImage.png"];

CATransform3D rotationTransform = CATransform3DMakeRotation(1.0f * M_PI, 0, 0, 1.0);
CABasicAnimation* rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform"];

rotationAnimation.toValue = [NSValue valueWithCATransform3D:rotationTransform];
rotationAnimation.duration = 0.25f;
rotationAnimation.cumulative = YES;
rotationAnimation.repeatCount = 10;

[rotatingImage.layer addAnimation:rotationAnimation forKey:@"rotationAnimation"];

Otros consejos

Si está mostrando su UIImage en un UIImageView, ¿por qué no simplemente establece la propiedad de transformación en la vista?

myimageView.transform = CGAffineTransformMakeRotation(<angle in radians>);

Es tan simple como eso, y para una imagen pequeña como la que usted habla sobre esto, es altamente eficiente: todas las vistas de UIKit están respaldadas por capas, por lo que es acelerado por hardware. Esta propiedad también es animable.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top