2017-10-13 35 views
0

Pendant une semaine, j'ai été confronté à une «simple» mise en page dans un storyboard. Je veux trois étiquettes qui ont toutes deux numberOfLines à deux.L'incorporation de trois UILabels dans un UIStackView horizontal donne des résultats différents dans une vue de table

L'UIStackView a quelques contraintes pour le positionner dans la cellule du tableau. Les deux étiquettes de gauche ont une contrainte de largeur fixée à < = 100 pour s'assurer qu'elles ne s'étendent pas trop loin. J'ai beaucoup joué avec la résistance à l'étreinte et à la compression du contenu et avec des choses comme setNeedsLayout ou layoutIfNeeded. Vous pouvez voir le problème dans la capture d'écran que j'ai ajouté. Il n'y a presque aucun code écrit dans le ViewController. Lorsque vous extrayez le projet de test que j'ai ajouté et que vous l'exécutez sur le simulateur, vous remarquerez que lorsque vous faites défiler les cellules vers le haut et vers le bas, elles commencent à se ressembler et le texte n'est plus tronqué. C'est exactement ce que je veux.

Here is a link to the test project I am working in.

Result

Répondre

1

Dans Prototype ensemble de cellules horizontal et vertical Content Hugging Priority-1000 et même pour Content Compression Resistance Priority-1000 (Étiquette gauche et Étiquette Moyen) et le résultat est ce que vous cherchez probablement, faire étiquettes gauche et du milieu aussi petits qu'ils peuvent être et celui de droite pour combler le vide ...

Simulator Screenshot

+0

Merci beaucoup pour hel ping-moi! Pourriez-vous expliquer pourquoi la priorité de 1000 fonctionne? Cela a-t-il quelque chose à voir avec d'autres contraintes qui sont 1000? –

+1

Faire une contrainte a une priorité de 1000 signifie que c'est fondamentalement nécessaire. Parfois, lorsque vous effectuez des mises en page plus complexes, vous pouvez rendre certaines contraintes facultatives avec des priorités plus faibles, ce qui signifie que si le système a deux contraintes qu'il ne peut pas satisfaire, il pourra supprimer la contrainte avec moins de priorité. une certaine logique et vous notifier dans un journal "Impossible de satisfaire simultanément les contraintes.". – Ladislav

+0

En ce qui concerne 'Content Hugging Priority' et' Content Compression Resistance Priority' va vérifier cette réponse où il est bien expliqué ce que chacun fait https://stackoverflow.com/questions/15850417/cocoa-autolayout-content-hugging- vs-contenu-compression-résistance-priorité – Ladislav