Question

Je travaille sur un redimensionnement automatique UIView personnalisé et Apple a très peu à dire à ce sujet. De plus, basé sur SO commentaires, la documentation d'Apple est en fait mal dans certaines régions. Enfin, même si il y a, ils ne semblent pas six composants de redimensionnement dans Interface Builder et six pour setAutoresizingMask: en corrélation du tout. Par exemple, le réglage du ressort de largeur IB a un effet différent de réglage du autoresizingMask à UIViewAutoresizingFlexibleWidth lors de la rotation du dispositif.

Y a-t-il des bonnes ressources pour apprendre sur la façon dont fonctionne sur le redimensionnement de l'iPhone?

Modifier

Je comprends les concepts de base d'Apple utilise tels que contentMode, et je l'ai lu dans la documentation UIView. Je cherche quelque chose qui explique un peu plus profondément ce que les paramètres de l'IB font en termes de ce qui est disponible dans le SDK programme.

Était-ce utile?

La solution

réglage de la autoresizingMask à UIViewAutoresizingFlexibleWidth, revient à définir la largeur du ressort, plus les deux entretoises de la gauche et de droite dans Interface Builder (les entretoises font que le bord est pas flexible). Si vous voulez reproduire le comportement de réglage seul le ressort de largeur, mais pas les entretoises gauche et à droite, vous devez mettre autoresizingMask à UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin

Autres conseils

J'ai trouvé ce message utile dans la compréhension iOS redimensionnement automatique.

http://www.techotopia.com/index.php/IOS_4_iPhone_Rotation,_View_Resizing_and_Layout_Handling

De Apple:

  

... préciser la valeur de ce masque en combinant les constantes décrites dans   UIViewAutoresizing utilisant le C opérateur OR. La combinaison de ces   constantes permet de spécifier les dimensions de la vue devraient croître ou   rétrécir par rapport à la superview. La valeur par défaut de cette propriété   est UIViewAutoresizingNone, ce qui indique que la vue ne doit pas être   redimensionné du tout.

     

... Par exemple,   supposons que cette propriété comprend le UIViewAutoresizingFlexibleWidth et   UIViewAutoresizingFlexibleRightMargin constantes mais ne comprend pas   la constante UIViewAutoresizingFlexibleLeftMargin, indiquant ainsi   que la largeur de la marge gauche de la vue est fixe mais de la vue   marge de largeur et à droite, peut être modifié. Ainsi, la vue semble ancrée   le côté gauche de son superview tout à la fois la largeur de la vue et de l'écart   à droite de l'augmentation de la vue.

     

Si les comportements Autoresizing ne proposent pas la disposition précise que vous   besoin de votre point de vue, vous pouvez utiliser une vue de conteneur personnalisé et prioritaire   sa méthode layoutSubviews pour positionner votre subviews plus précisément.

Donc, si vous souhaitez positionner une vue ancrée sur le dessus et à droite de son superview, vous pouvez appliquer un masque comme:

[myView setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleBottomMargin];

superview a des paramètres tels que contentMode et autoresizesSubviews , wich tous avec autoresizingMask de ses sous-vues rend le comportement de redimensionnement

lire attentivement http: // developer.apple.com/library/ios/#documentation/uikit/reference/UIView_Class/UIView/UIView.html

Pour mémoire, je me grattais la tête pendant une heure parce que mon une ligne UILabel juste ne serait pas automatiquement ajuster la taille de police pour adapter la largeur. Enfin, ce fait l'affaire:

label.contentMode = UIViewContentModeScaleAspectFit;

Je googlé et personne ne semble préciser ce détail (tout le monde vous dit l'étiquette doit être 1 ligne, réglez adjustsFontSizeToFitWidth / minimumFontSize etc.). Peut-être la valeur par défaut de cette propriété a changé? Je suis sur iOS 4.3.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top