191 votes

iOS : UILabel multiligne dans mise en page automatique

Je vais avoir du mal à essayer d'atteindre de très simples de mise en page de comportement avec Mise en page Automatique. Mon point de vue, contrôleur ressemble à de l'IB:

enter image description here

Le haut de l'étiquette est l'étiquette du titre, je ne sais pas combien de lignes il sera. J'ai besoin de l'étiquette du titre pour afficher toutes les lignes de texte. J'ai aussi besoin de deux étiquettes et la petite image de droite ci-dessous le titre, cependant grand, il arrive à être. J'ai mis un espacement vertical de contraintes entre les étiquettes et les petits de l'image, ainsi que d'un haut espacement des contraintes entre le titre de l'étiquette et de ses superview et un espacement de contrainte entre la petite image et son superview. Le blanc UIView n'a pas de hauteur de contrainte, de sorte qu'il devrait s'étirer verticalement à contenir ses sous-vues. J'ai mis le nombre de lignes de l'étiquette du titre à 0.

Comment puis-je obtenir le titre d'étiquette pour redimensionner pour s'adapter le nombre de lignes requis par la chaîne? Ma compréhension est que je ne peux pas utiliser setFrame méthodes parce que j'utilise une Mise en page Automatique. Et je dois utiliser la Mise en page Automatique parce que j'ai besoin de ces autres points de vue à rester en-dessous de l'étiquette du titre (d'où les contraintes).

Comment puis-je faire cela?

263voto

mwhuss Points 1180

Utilisation sur le et mise en forme automatique doit gérer le reste.

Consultez la documentation de UILabel.

216voto

Charlie Wu Points 2308

Si vous voulez étendre votre étiquette de définie le nombre de lignes à 0 et aussi surtout pour auto mise en valeur hauteur > = x. Disposition automatique fait le reste. vous pouvez également contenir d’autres éléments de votre base sur l’élément précédent pour positionner correctement ensuite.

auto layout

18voto

Cory Imdieke Points 3451

J'étais juste le combat avec ce scénario exact, mais avec un peu plus de vues nécessaires à la redimensionner et la déplacer vers le bas. Il a été me rend fou, mais j'ai enfin compris.

Voici la clé: Interface Builder aime à le jeter dans des contraintes supplémentaires que vous pouvez ajouter et déplacer des points de vue et vous pouvez ne pas remarquer. Dans mon cas, j'ai eu une vue de la moitié du chemin vers le bas qui a une contrainte supplémentaire à ce qui est spécifié la taille entre elle et ses superview, fondamentalement, chaque il à ce point. Cela signifie que rien au-dessus, il peut redimensionner des plus grands car il va à l'encontre de cette contrainte.

Un moyen facile de savoir si c'est le cas en essayant de redimensionner l'étiquette manuellement. N'IB laissez-vous cultiver? Si elle le fait, les étiquettes ci-dessous déplacer comme vous le souhaitez? Assurez-vous que vous avez tous les deux les vérifier avant de les redimensionner pour voir comment vos contraintes de déplacer votre point de vue:

IB Menu

Si la vue est coincé, suivez les points de vue qui sont en dessous et assurez-vous que l'un d'entre eux n'ont pas un haut de l'espace de superview contrainte. Ensuite, assurez-vous que votre nombre de lignes de l'option pour l'étiquette est définie à 0 et il doit prendre soin de tout le reste.

-12voto

user1662392 Points 47

Une façon de le faire... Comme la longueur du texte augmente essayer de changer (diminution) la fontsize de l’étiquette de texte à l’aide

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X