2010-07-02 18 views
9

J'essaye d'avoir une des vues d'enfants dans mon écran (possédé par un contrôleur de vue) pas tournent quand l'appareil tourne. Mon contrôleur de vue permet les rotations comme il se doit, et j'essaie d'appliquer une rotation de 90 degrés à la vue «stationnaire» pour contrer la rotation globale.La définition d'une transformation de rotation vers un UIView ou sa couche ne semble pas fonctionner?

Le problème est, tout semble tourner de toute façon, et la transformation ne semble rien faire. J'ai essayé avec une transformation affine sur la vue, et avec une transformation 3D sur le calque (ci-dessous). La méthode est appelée, mais je ne vois jamais de différence visuelle.

Des pensées? Merci.

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration 
{ 
    CALayer *layer = stuckview.layer; 
    layer.transform = CATransform3DMakeRotation(90, 0, 0, 1); 
}  

Répondre

26

Pour aider les autres à trouver, je suis ajoutant quelques phrases interrogeables, comme:

empêchent un UIView de tourner

empêchent un fond UITableView de tourner

arrêter une rotation UIView

arrêter une rotation d'arrière-plan UITableView


Un échantillon complet pour toute orientation:

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration 
    { 
     switch (toInterfaceOrientation) { 
      case UIInterfaceOrientationLandscapeLeft: 
       stuckview.transform = CGAffineTransformMakeRotation(M_PI_2); // 90 degress 
       break; 
      case UIInterfaceOrientationLandscapeRight: 
       stuckview.transform = CGAffineTransformMakeRotation(M_PI + M_PI_2); // 270 degrees 
       break; 
      case UIInterfaceOrientationPortraitUpsideDown: 
       stuckview.transform = CGAffineTransformMakeRotation(M_PI); // 180 degrees 
       break; 
      default: 
       stuckview.transform = CGAffineTransformMakeRotation(0.0); 
       break; 
     } 
    } 
+0

Je vérifie et trouve que UIInterfaceOrientationPortraitUpsideDown ne fonctionne pas dans ios 6. –

+0

est stuckview un CALayer ou un UIView? –

+0

@AdamWaite - Un UIView, comme indiqué par le nom et la description! ;-) – nekno

4

Votre code est-il réellement exécuté? (Avez-vous implémentez shouldAutorotateToInterfaceOrientation:?)

stuckview.transform = CGAffineTransformMakeRotation(M_PI_2); 

devrait faire le travail.

Remarque: Les fonctions prennent des radians et non des degrés.