2010-07-07 7 views
0

J'ai des rangées de sous-vues dans un UIScrollView que je veux réorganiser après la rotation en mode paysage. Idéalement, je veux avoir 5 boutons par rangée avec le nombre total de rangées déterminé par la hauteur du bouton et combien de boutons il y a au total (plus un peu de rembourrage). Le problème que j'ai est de savoir comment itérer à travers les sous-vues tout en itérant à travers la position x pour 5 boutons sur la ligne, puis en changeant la position y après avoir atteint la limite de 5 boutons pour commencer une nouvelle ligne.Modification des cadres de sous-vue dans UIScrollView lors de la rotation

En ce moment, je peux parcourir les sous-vues, mais je ne sais pas comment automatiser le réglage du cadre pour 5 par ligne et ensuite changer la position y pour commencer une nouvelle ligne. Toutes les suggestions sont grandement appréciées!

for (UIView *subview in someScrollView.subviews) 
{ 
     if (subview.tag >= 100) { 

      [subview setFrame: CGRectMake(x, y, buttonWidth, buttonHeight)]; 
      NSLog(@"%.1f %.1f %d %d on subview %d", x, y, buttonWidth, buttonHeight, subview.tag); 

     } 

} 

Répondre

1

Je ne l'ai pas compris ... merci tout de même.

Pour le mode portrait:

for (UIView *subview in outletScrollView.subviews) 
    { 
     if (x <= 320 && subview.tag != 0) { 

      [subview setFrame: CGRectMake(x, y, buttonWidth, buttonHeight)]; 
      //NSLog(@"%.1f %.1f %d %d on subview %d", x, y, buttonWidth, buttonHeight, subview.tag); 

      x = x + buttonWidth + gapX; 

      if (x == 320) { 
       x = gapX; 
       y = y + buttonHeight + gapY; 
      } 

     } 

    } 

Pour le mode paysage:

for (UIView *subview in outletScrollView.subviews) 
    { 
     if (x <= 480 && subview.tag != 0) { 

      [subview setFrame: CGRectMake(x, y, buttonWidth, buttonHeight)]; 
      //NSLog(@"%.1f %.1f %d %d on subview %d", x, y, buttonWidth, buttonHeight, subview.tag); 

      x = x + buttonWidth + gapX; 

      if (x == 480) { 
       x = gapX; 
       y = y + buttonHeight + gapY; 
      } 

     } 

    } 
+0

Comment avez-vous assuriez scrollview ne réinitialise pas les cadres lors du défilement, – Omiga

+0

C'était avant autolayout existait, de sorte que vous ne l'avez pas dois depuis la mise en place du cadre était permanente. (note: cette réponse date d'il y a 3,5 ans). Avec autolayout, soit vous devez le désactiver, soit vous devez mettre à jour les contraintes pour qu'elles restent – iwasrobbed

+0

Je l'ai résolu de cette façon ... merci – Omiga

Questions connexes