2010-07-04 4 views
0

Comment puis-je faire pivoter ma vue de base tout en m'assurant que les sous-vues sont toujours à leur emplacement correct? Je suppose que je dois pivoter de 90 degrés et m'étirer selon le rapport de fenêtre et effectuer l'inverse sur la sous-vue?Rotation de l'écran principal et rotation arrière de la sous-vue

Ce qui suit ne fonctionne pas ...

- (void) performTransformation:(UIView*)view isBase:(BOOL)isBase 
{ 
    if(isBase) { 
     [view.layer setAffineTransform:CGAffineTransformConcat(
      CGAffineTransformMakeRotation(M_PI * 0.5), 
      CGAffineTransformMakeScale(-(3.0/4.0), (4.0/3.0)))]; 
    } else { 
     [view.layer setAffineTransform:CGAffineTransformConcat(
      CGAffineTransformMakeScale(-(4.0/3.0), (3.0/4.0)), 
      CGAffineTransformMakeRotation(-M_PI * 0.5))]; 
} 

Répondre

0

Êtes-vous en rotation en réponse à l'évolution de l'orientation de l'appareil? Si c'est le cas, vous pouvez simplement utiliser la méthode -shouldAutorotateToInterfaceOrientation: pour faire pivoter la vue. Pour faire ce que vous décrivez, vous pouvez définir la propriété UIView s 'autoresizingMask. Dans votre exemple, vous effectuez les opérations suivantes:

[viewX setAutoresizingMask:(UIViewFlexibleRightMargin | 
          UIViewFlexibleBottomMargin)]; 

[viewY setAutoresizingMask:(UIViewFlexibleTopMargin | 
          UIViewFlexibleLeftMargin)]; 

que le code établira la première vue (que j'ai appelé viewX) de rester avec le coin supérieur gauche, et la deuxième vue avec le ascendante droite.

+0

Non, je redimensionne la base afin de faire pivoter l'effet d'une animation UIView. –

+0

Eh bien, tant que ce que vous tournez et que vous transformez est la vue d'ensemble de ces vues, le réglage du masque autoresize devrait fonctionner. –