2009-08-29 12 views
19

He visto a otras personas que han tenido esta pregunta, pero la mayoría de las respuestas no están funcionando en la última versión 3.0 de iPhone OS. De todos modos, me pregunto cómo puedo rotar programáticamente una UIView sin ninguna entrada desde el acelerómetro. El código que he encontrado hasta ahora:Girar UIView en Cocoa Touch

CGAffineTransform transform = CGAffineTransformMakeRotation(3.14159/2); 
view.transform = transform; 
CGRect contentRect = CGRectMake(-80, 80, 480, 320); 
view.bounds = contentRect; 

Sin embargo, esto no funciona para UIView (en mis pruebas). ¿Hay algo que deba hacer mi AppDelegate para que este/otro código funcione o existe una forma mejor de hacer lo mismo?

¡Gracias por cualquier ayuda!

Respuesta

40

esto funciona para mí

CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI_2); 
self.view.transform = transform; 

// Repositions and resizes the view. 
CGRect contentRect = CGRectMake(0,0, 480, 320); 
self.view.bounds = contentRect; 
+14

Use M_PI en lugar de 3.14159 –

+32

Y use M_PI_2 en lugar de M_PI/2 – Allyn

1

que tuvieron éxito con que:

CATransform3D rotationTransform = CATransform3DIdentity; 
[view.layer removeAllAnimations]; 
rotationTransform = CATransform3DRotate(rotationTransform, angle, 0.0, 0.0, 1); 
view.layer.transform = rotationTransform; 
+0

Hola Marco: En el código anterior, ¿cuál sería el "ángulo"? – PF1

+1

Además, parece que no puede compilarse aunque haya importado el framework QuartzCore. – PF1

+0

Ángulo es el ángulo en radiantes en el que se girará la vista. No se compilará tal vez debido a otros errores. ¿Qué dice el registro de construcción? – Marco

0

No estoy seguro si esto se considera API privada, por lo que puede que no quiera usarlo, pero si quieres para forzar la orientación a cambiar sin inclinar el dispositivo, puede intentar llamar a:

[[UIDevice currentDevice] performSelector:@selector(setOrientation:) 
         withObject:(id)UIInterfaceOrientationLandscapeLeft]; 

No he probado eso todavía funciona en 3.1.2. aunque sé que funciona en 3.0.

Cuestiones relacionadas