2009-08-29 10 views
19

Ho visto altre persone che hanno avuto questa domanda, ma la maggior parte delle risposte non funzionano sull'ultima versione 3.0 di iPhone OS. Ad ogni modo, mi chiedo come posso ruotare programmaticamente un UIView senza alcun input dall'accelerometro. Il codice che ho trovato finora:Ruota UIView in Cocoa Touch

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

Tuttavia, questo non funziona per UIView (nei miei test). C'è qualcosa che devo fare il mio AppDelegate affinché questo/altro codice funzioni, o c'è un modo migliore di fare la stessa cosa?

Grazie per qualsiasi aiuto!

risposta

40

questo funziona per me

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

Utilizzare M_PI anziché 3.14159 –

+32

E utilizzare M_PI_2 anziché M_PI/2 – Allyn

1

ho avuto successo con quello:

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

Ciao Marco: Nel codice sopra, quale sarebbe l'angolo? – PF1

+1

Inoltre, questo non sembra essere in grado di creare anche se ho importato il framework QuartzCore. – PF1

+0

L'angolo è l'angolo in radianti, la vista verrà ruotata. Non si costruirà forse a causa di altri errori. Cosa dice il log di costruzione? – Marco

0

Non sono sicuro se questo è considerato API privato, quindi non si può decidere di usarlo, ma se si vuole per forzare l'orientamento a cambiare senza inclinare il dispositivo, puoi provare a chiamare:

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

Non l'ho provato funziona ancora su 3.1.2. anche se so che funziona su 3.0.

Problemi correlati