480 Stimmen

Mehrere Textzeilen in UILabel

Gibt es eine Möglichkeit, mehrere Textzeilen in UILabel wie in der UITextView oder sollte ich stattdessen die zweite verwenden?

851voto

Ilya Suzdalnitski Punkte 51083

Stellen Sie den Zeilenumbruchmodus auf Wortumbruch und die Anzahl der Zeilen auf 0 :

// Swift
textLabel.lineBreakMode = .byWordWrapping
textLabel.numberOfLines = 0

// Objective-C
textLabel.lineBreakMode = NSLineBreakByWordWrapping;
textLabel.numberOfLines = 0;

// C# (Xamarin.iOS)
textLabel.LineBreakMode = UILineBreakMode.WordWrap;
textLabel.Lines = 0;  

Alte Antwort wiederhergestellt (als Referenz und für Entwickler, die iOS unter 6.0 unterstützen möchten):

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

Nebenbei bemerkt: beide Enum-Werte führen zu 0 sowieso.

149voto

In IB setzen Sie die Anzahl der Zeilen auf 0 (erlaubt unbegrenzte Zeilen)

Wenn Sie mit IB in das Textfeld tippen, verwenden Sie "alt-return", um einen Zeilenumbruch einzufügen und zur nächsten Zeile zu wechseln (oder Sie können bereits durch Zeilen getrennten Text hineinkopieren).

57voto

Die beste Lösung, die ich gefunden habe (für ein ansonsten frustrierendes Problem, das im Framework hätte gelöst werden sollen), ist ähnlich wie die von vaychick.

Setzen Sie einfach die Zeilenzahl auf 0, entweder in IB oder im Code

myLabel.numberOfLines = 0;

Dadurch werden die benötigten Zeilen angezeigt, aber die Beschriftung wird neu positioniert, so dass sie horizontal zentriert ist (so dass eine 1- und 3-zeilige Beschriftung in ihrer horizontalen Position ausgerichtet ist). Um das zu beheben, fügen Sie hinzu:

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;

38voto

Abi Punkte 481

Verwenden Sie dies, um mehrere Textzeilen in UILabel :

textLabel.lineBreakMode = NSLineBreakByWordWrapping;
textLabel.numberOfLines = 0;

Schnell:

textLabel.lineBreakMode = .byWordWrapping
textLabel.numberOfLines = 0

24voto

myUILabel.numberOfLines = 0;
myUILabel.text = @"your long string here";
[myUILabel sizeToFit];

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X