2010-12-07 16 views
1
après XIB

Dans mon application, j'ajouter une vue chargée de UIViewAutosizingMaskFlexibleWidth et avec XIB le résultat escompté que dans un des deux cas:ne fonctionne pas Dimensionnement automatique lors du chargement de rotation

  1. Ajouter le portrait sous-vue, et en tournant sur le paysage, redimensionne correctement la sous-vue;
  2. L'ajout de la sous-vue sur le paysage n'entraîne pas le redimensionnement de la largeur de la sous-vue comme cela se produit lors de la rotation;

Voici le code:

viewMenuList = [[MenuListController alloc] initWithNibName:@"MenuListController" bundle:[NSBundle mainBundle]]; 
viewMenuList.view.autoresizingMask = UIViewAutoresizingFlexibleWidth; 
self.view.autoresizesSubviews = YES; 
[self.view addSubview:viewMenuList.view]; 
[self.view sendSubviewToBack:viewMenuList.view]; 
[viewMenuList.view setNeedsLayout]; 
[viewMenuList.view setNeedsDisplay]; 
NSLog(@"frame do menu links view %f, %f, %f, %f", self.view.frame.origin.x, self.view.frame.origin.y, self.view.frame.size.width, self.view.frame.size.height); 
NSLog(@"frame do menu list view %f, %f, %f, %f", viewMenuList.view.frame.origin.x, viewMenuList.view.frame.origin.y, viewMenuList.view.frame.size.width, viewMenuList.view.frame.size.height); 

La sortie de la console est:

2010-12-07 16:34:22.552 SlideShow_iPad[19352:207] frame do menu links view 0.000000, 0.000000, 1030.000000, 111.000000 
2010-12-07 16:34:22.596 SlideShow_iPad[19352:207] frame do menu list view 0.000000, 0.000000, 768.000000, 109.000000 

La dernière ligne devrait afficher une largeur de 1030, il ne devrait pas? Il redimensionne à 1030 après avoir tourné au portrait et retourné au paysage. La chose la plus étrange est que j'utilise la même technique dans la vue d'ensemble et a fonctionné.

Répondre

0

Vous ne devez pas mélanger à la fois Interface Builder et le code Objective-C pour gérer le redimensionnement. Supprimer autoresizingMask et autoresizesSubviews du code et faire les deux seulement dans Interface Builder. Vous pourriez avoir des définitions en conflit maintenant.

autoresizingMark: command-3 pour afficher les propriétés de taille. Cochez la case "Autosizing", l'animation montre assez bien à quoi ressemblera votre redimensionnement.

autoresizesSubregements: commande-1 pour afficher les propriétés du dessin. Il y a une case à cocher pour cela.

+0

Le fait est que le comportement réel est correct. Le problème est que j'ai mal compris la définition de l'autosizing. Autosizing ne signifie pas qu'il devrait définir la taille de l'image au moment où vous ajoutez une sous-vue. –