¿cómo puedo calcular el ángulo de rotación para cualquier objeto dado (es decir, una uiimageview)?iphone sdk CGAffineTransform obtener el ángulo de rotación de un objeto
Respuesta
Técnicamente no se puede, porque la transformación puede incluir una operación skew que convierte la imagen en un paralelogramo y el ángulo de rotación ya no está definido.
De todos modos, ya que la matriz de rotación genera
cos(x) sin(x) 0
-sin(x) cos(x) 0
0 0 1
Puede recuperar el ángulo con
return atan2(transform.b, transform.a);
O puede utilizar acos y funciones asin. Obtendrá exactamente el mismo resultado:
NSLog (@"%f %f %f", acos (MyView.transform.a), asin (MyView.transform.b), atan2(MyView.transform.b, MyView.transform.a));
La identidad que sugiere solo es cierto si no hay escalado. Si también hay escalado, debe usar la función atan(). –
muy útil, tiro y respuesta fácil +1 –
usted puede conseguir fácilmente el ángulo de la rotación de la siguiente manera:
CGFloat angle = [(NSNumber *)[view valueForKeyPath:@"layer.transform.rotation.z"] floatValue];
Por ejemplo:
view.transform = CGAffineTransformMakeRotation(0.02);
CGFloat angle = [(NSNumber *)[view valueForKeyPath:@"layer.transform.rotation.z"] floatValue];
NSLog(@"%f", angle); // 0.020000
Desde el documentation:
Core Animation amplía el protocolo de codificación de valores-clave para permitir obtener y establecer los valores comunes de la matriz CATransform3D de una capa a través de las rutas clave. La Tabla 4 describe los caminos principales para que transforman de una capa y las propiedades sublayerTransform son clave-valor de codificación y observando compatible
¿Dónde está la documentación para esto? Si bien esto es bueno, no estoy seguro de que pase la inspección de Apple. –
@ RichardJ.RossIII - Aquí está: https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/CoreAnimation_guide/Articles/Layers.html#//apple_ref/doc/uid/TP40006082-SW17 – sch
Una gran respuesta, me salvó de un gran problema. +1 –
Usted puede tratar con esto:
- (void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
CGPoint newLocationPoint = [[touches anyObject] locationInView:self.superview];
int x = self.center.x;
int y = self.center.y;
float dx = newLocationPoint.x - x;
float dy = newLocationPoint.y - y;
double angle = atan2(-dx,dy);
self.layer.position = self.center;
self.layer.transform = CATransform3DMakeRotation(angle, 0, 0, 1);
NSLog(@"touchesMoved %f %f %d,%d %f,%f angle:%f",newLocationPoint.x,newLocationPoint.y,x,y,dx,dy,angle);
}
- 1. Obtener solo la rotación de un CGAffineTransform
- 2. CABasicAnimation cómo obtener el ángulo de rotación actual
- 3. cómo obtener el ángulo de UIView después de CGAffineTransform?
- 4. rotación CGAffineTransform va por el camino equivocado
- 5. ¿Cómo se extrae el ángulo de rotación de un QTransform?
- 6. ¿Cómo recuperar el ángulo de rotación 3D en cada eje?
- 7. iPhoneSDK calcular Ángulo de rotación de CATransform3D
- 8. iPhone SDK Obtener el directorio tmp
- 9. Obtener tamaño de UIView después solicitando CGAffineTransform
- 10. Obtener iPhone color iOS Sdk
- 11. ¿Cómo serializo un objeto simple en sdk de iPhone?
- 12. Obtenga la transformación de escalado de CGAffineTransform
- 13. ¿Cómo obtener ISOCurrencyCode de un ISOCountryCode en iphone sdk?
- 14. Cómo obtener el tamaño de UIKeyboard con Apple iPhone SDK
- 15. Rotación de un objeto alrededor de un vector central punto
- 16. obtener el ángulo de inclinación Android
- 17. rotación de fuerza del iPhone
- 18. iPhone rotación UIImageView
- 19. cómo obtener el valor de rotación de un elemento de interfaz de usuario en WPF
- 20. ¿Cómo obtener el mensaje NSError en Iphone sdk?
- 21. Cómo obtener una imagen en color en el iPhone SDK
- 22. Cómo obtener NSDate actual para el simulador Fecha? iPhone Sdk
- 23. ¿Calcula el movimiento X Y en función del ángulo de rotación?
- 24. ICMP y el iPhone SDK
- 25. Cómo calcular el ángulo de rotación del panel más cercano en el carrusel
- 26. Descargando un archivo grande - SDK de iPhone
- 27. ¿Puedo mover el origen al hacer una transformación de rotación en Cuarzo 2D para el iPhone?
- 28. cómo obtener el nombre de la imagen de un UIButton en iPhone SDK?
- 29. Iphone SDK: suena el sistema de grabación
- 30. obtener el ángulo de una línea desde el horizonte
gracias :) exactamente lo que necesitaba – nathanjosiah
lo es transform.b y transform.a? son b y las propiedades de una transformada? nunca he visto esos. – openfrog
@openfrog: http://developer.apple.com/iphone/library/documentation/GraphicsImaging/Reference/CGAffineTransform/Reference/reference.html#//apple_ref/doc/uid/TP30000946-CH2g-BBCJFFAE – kennytm