Reputation: 5570
Is there any way to have a label wordwrap text as needed? I have the line breaks set to word wrap and the label is tall enough for two lines, but it appears that it will only wrap on line breaks. Do I have to add line breaks to make it wrap properly? I just want it to wrap if it can't fit it in horizontally.
Upvotes: 160
Views: 115060
Reputation: 84
Xcode 12.5.1, Swift 5.
I found that even though I had Lines = 0 and LineBreak = Word Wrap set, it still didn't wrap the long label text. Double check your label constraints in IB (or wherever you set them).
I found that sometimes IB tries to fix the constraint settings and adds a >= or <= constraint for leading and trailing edges.
This label constraint will not wrap the text:
But this will:
Notice the >= on the Label.trailing edge in the first picture. Set this to = and the text should wrap.
Upvotes: 0
Reputation: 12383
Xcode 10, Swift 4
Wrapping the Text for a label can also be done on Storyboard by selecting the Label, and using Attributes Inspector.
Lines = 0 Linebreak = Word Wrap
Upvotes: 4
Reputation: 1146
UILabel
has a property lineBreakMode
that you can set as per your requirement.
Upvotes: 27
Reputation: 12314
In Swift you would do it like this:
label.lineBreakMode = NSLineBreakMode.ByWordWrapping
label.numberOfLines = 0
(Note that the way the lineBreakMode constant works is different to in ObjC)
Upvotes: 27
Reputation: 75077
If you set numberOfLines
to 0 (and the label to word wrap), the label will automatically wrap and use as many of lines as needed.
If you're editing a UILabel
in IB, you can enter multiple lines of text by pressing option+return to get a line break - return alone will finish editing.
Upvotes: 320