Multiple lines of text in UILabel Multiple lines of text in UILabel ios ios

Multiple lines of text in UILabel


I found a solution.

One just has to add the following code:

// SwifttextLabel.lineBreakMode = .ByWordWrapping // or NSLineBreakMode.ByWordWrappingtextLabel.numberOfLines = 0 // For Swift >= 3textLabel.lineBreakMode = .byWordWrapping // notice the 'b' instead of 'B'textLabel.numberOfLines = 0// Objective-CtextLabel.lineBreakMode = NSLineBreakByWordWrapping;textLabel.numberOfLines = 0;// C# (Xamarin.iOS)textLabel.LineBreakMode = UILineBreakMode.WordWrap;textLabel.Lines = 0;  

Restored old answer (for reference and devs willing to support iOS below 6.0):

textLabel.lineBreakMode = UILineBreakModeWordWrap;textLabel.numberOfLines = 0;

On the side: both enum values yield to 0 anyway.


In IB, set number of lines to 0 (allows unlimited lines)

When typing within the text field using IB, use "alt-return" to insert a return and go to the next line (or you can copy in text already separated out by lines).


The best solution I have found (to an otherwise frustrating problem that should have been solved in the framework) is similar to vaychick's.

Just set number of lines to 0 in either IB or code

myLabel.numberOfLines = 0;

This will display the lines needed but will reposition the label so its centered horizontally (so that a 1 line and 3 line label are aligned in their horizontal position). To fix that add:

CGRect currentFrame = myLabel.frame;CGSize max = CGSizeMake(myLabel.frame.size.width, 500);CGSize expected = [myString sizeWithFont:myLabel.font constrainedToSize:max lineBreakMode:myLabel.lineBreakMode]; currentFrame.size.height = expected.height;myLabel.frame = currentFrame;