2009-08-29 5 views
19

J'ai vu d'autres personnes qui ont eu cette question, mais la plupart des réponses ne fonctionnent pas sur la dernière version 3.0 de l'iPhone OS. Quoi qu'il en soit, je me demande comment je peux faire pivoter un UIView par programmation sans aucune intervention de l'accéléromètre. Le code que je l'ai trouvé à ce jour:Faire pivoter UIView dans Cocoa Touch

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

Cependant, cela ne fonctionne pas pour UIView (dans mes tests). Y at-il quelque chose que je dois faire mon AppDelegate pour que ce code/autre fonctionne, ou y at-il une meilleure façon de faire la même chose?

Merci pour toute aide!

Répondre

40

cela fonctionne pour moi

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

Utilisez M_PI au lieu de 3.14159 –

+32

Et utilisez M_PI_2 au lieu de M_PI/2 – Allyn

1

J'ai eu du succès avec que:

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

Salut Marco: Dans le code ci-dessus, quel serait «l'angle»? – PF1

+1

En outre, cela ne semble pas pouvoir se construire même si j'ai importé le framework QuartzCore. – PF1

+0

L'angle est l'angle dans les radiants, la vue sera tournée. Cela ne se construira peut-être pas à cause d'autres erreurs. Que dit le journal de construction? – Marco

0

Je ne sais pas si cela est considéré comme API privée, vous voudrez peut-être de ne pas l'utiliser, mais si vous voulez pour forcer l'orientation pour changer sans incliner l'appareil, vous pouvez essayer d'appeler:

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

Je n'ai pas testé cela cela fonctionne toujours sur 3.1.2. même si je sais que cela fonctionne sur 3.0.

Questions connexes