2009-07-13 8 views
127

Y a-t-il un moyen d'avoir un texte wordwrap d'étiquette si nécessaire? J'ai les sauts de ligne mis à l'enveloppe de mot et l'étiquette est assez grande pour deux lignes, mais il semble que cela ne s'enroulera que sur les sauts de ligne. Est-ce que je dois ajouter des sauts de ligne pour le faire envelopper correctement? Je veux juste qu'il s'enroule s'il ne peut pas l'ajuster horizontalement.UILabel - Wordwrap text

Répondre

262

Si vous définissez numberOfLines sur 0 (et l'étiquette sur retour à la ligne), l'étiquette sera automatiquement enveloppée et utilisera autant de lignes que nécessaire.

Si vous modifiez un UILabel dans IB, vous pouvez entrer plusieurs lignes de texte en appuyant sur l'option + retour pour obtenir un saut de ligne - retour seul terminera l'édition.

+113

précisiez noobs comme moi, ce serait: cellule .textLabel.numberOfLines = 0; cell.textLabel.lineBreakMode = UILineBreakModeWordWrap; –

+46

Sous iOS 6 et versions ultérieures, utilisez NSLineBreakByWordWrapping, pas UILineBreakModeWordWrap. –

+3

Vous pourriez également avoir besoin de ce qui suit: label.autoresizingMask = UIViewAutoresizingFlexibleHeight; –

22

UILabel possède une propriété lineBreakMode que vous pouvez définir selon vos besoins.

+10

"Les sauts de ligne sont définis sur Enveloppe de mots". Cela ne s'applique qu'aux sauts de ligne réels, il ne se casse pas automatiquement une fois qu'il est trop long. – Codezy

14

Swift vous le faites comme ceci:

label.lineBreakMode = NSLineBreakMode.ByWordWrapping 
    label.numberOfLines = 0 

(Notez que la façon dont le travaux constants de lineBreakMode est différent dans ObjC)

+0

Prenez soin d'expliquer comment c'est différent? – Mike

+0

Je pense que je voulais juste dire que le nom est différent. Il a probablement changé à nouveau dans swift3 – Nathan

+0

Le mode de saut de ligne doit être réglé sur Word Wrap par défaut – MobileMon