Codezy
Codezy

Reputation: 5570

UILabel - Wordwrap text

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

Answers (5)

Michael
Michael

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:

enter image description here


But this will:

enter image description here

Notice the >= on the Label.trailing edge in the first picture. Set this to = and the text should wrap.

Upvotes: 0

Naishta
Naishta

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

enter image description here

Upvotes: 4

Greg
Greg

Reputation: 1146

UILabel has a property lineBreakMode that you can set as per your requirement.

Upvotes: 27

Nathan
Nathan

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

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

Related Questions