2013-10-05 2 views
0

J'ai une cellule de tableau sur laquelle j'ai actuellement un UILabel dit labelA dont la hauteur est dynamique, c'est-à-dire basée sur le contenu. La largeur de l'étiquette est de 290px. Je souhaite ajouter une autre étiquette à côté de labelA dont le nom est labelB. La cellule de table et labelA regarde comme ci-dessous: enter image description hereLargeur d'étiquette personnalisée/dynamique en utilisant la mise en page automatique

Question 1 - Ici, la hauteur est en pleine expansion et j'ai 2 lignes pour afficher le texte complet ici. Mais il semble que la largeur pour la 1ère et 2ème rangée est la même que 290. Y at-il un moyen que je puisse arrêter la largeur de l'étiquette où mon texte se termine, dans ce cas la largeur de mon étiquette pour la 1ère rangée devrait être 290 En ligne il devrait se terminer après le dernier travail "Paul" pour que je puisse commencer ma prochaine étiquette labelB à partir de là?

Question 2 - En outre, tout en créant le xib, je place mes deux étiquettes sur la même ligne. Si je mets une contrainte entre les deux étiquettes, peut-on étiqueterA pousser l'étiquette B vers une autre ligne quand elle se développe? Ma cellule et les étiquettes doivent finalement ressembler à ci-dessous où l'étiquette avec fond violet est labelA et rect avec bordure orange et blanc à l'intérieur est labelB.

enter image description here

S'il vous plaît laissez-moi savoir si cela est possible? Je suis toujours un Noob dans iOS et la mise en page automatique.

Répondre

0

Pour répondre Question 1, UILabel dessine toujours le texte dans un cadre rectangulaire. UILabel ne peut pas dessiner deux lignes de texte comme vous le souhaitez. Vous pouvez utiliser deux UILabel s, un pour chaque ligne, mais vous devrez effectuer des calculs manuels pour déterminer la quantité de texte qui va entrer dans la première étiquette, puis le texte à "déborder" pour la seconde (boundingRectWithSize:options:attributes:context: votre ami pour cela).

Pour répondre à la question 2 , vous devez épingler le bord inférieur de labelB au bord inférieur de labelA. Laissez la hauteur de chaque étiquette être déterminée par la taille du contenu intrinsèque. En supposant que la police est la même, cela devrait aboutir au résultat que vous voulez. (Vous pouvez également essayer d'aligner les lignes de base des deux étiquettes, mais je ne me souviens pas comment cela se comporte pour les étiquettes multilignes.)

A ce propos, vous devriez regarder dans iOS 7's Text Kit. Personnellement, je n'ai pas encore eu l'occasion d'approfondir la question, mais c'est très puissant et vous pourriez trouver une meilleure façon de faire ce que vous recherchez ici.

Questions connexes