UILabel - Wordwrap-Text


150

Gibt es eine Möglichkeit, bei Bedarf einen Beschriftungs-Textumbruch zu erstellen? Ich habe die Zeilenumbrüche auf Zeilenumbruch eingestellt und die Beschriftung ist groß genug für zwei Zeilen, aber es scheint, dass sie nur bei Zeilenumbrüchen umbrochen wird. Muss ich Zeilenumbrüche hinzufügen, damit es richtig umbrochen wird? Ich möchte nur, dass es sich einwickelt, wenn es nicht horizontal hineinpasst.

Antworten:


301

Wenn Sie numberOfLinesauf 0 setzen (und die Beschriftung auf Zeilenumbruch setzen), wird die Beschriftung automatisch umbrochen und verwendet so viele Zeilen wie nötig.

Wenn Sie eine UILabelin IB bearbeiten , können Sie mehrere Textzeilen eingeben, indem Sie option+ drücken return , um einen Zeilenumbruch zu erhalten. returnAllein die Bearbeitung wird abgeschlossen.


124
Um dies für Noobs wie mich zu verdeutlichen, wäre dies: cell.textLabel.numberOfLines = 0; cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;
Brian Moeskau

46
Verwenden Sie in iOS 6 und höher NSLineBreakByWordWrappingnicht UILineBreakModeWordWrap.
Aaron Brager

3
Möglicherweise benötigen Sie auch Folgendes: label.autoresizingMask = UIViewAutoresizingFlexibleHeight;
William Grand

6
label.lineBreakMode = .ByWordWrappingund label.numberOfLines = 0in
Kürze

9
Für alle, denen dies nicht klar war (wie ich): Das UILabel muss eine gewisse Begrenzung seiner Breite haben (entweder aufgrund einer tatsächlichen Breitenbeschränkung oder einer Randbeschränkung); Andernfalls wird es nicht verpackt.
JCADY

27

UILabelhat eine Eigenschaft lineBreakMode, die Sie gemäß Ihren Anforderungen festlegen können.


11
"Ich habe die Zeilenumbrüche auf Zeilenumbruch eingestellt". Dies schließt nur tatsächliche Zeilenumbrüche ein und wird nicht automatisch unterbrochen, sobald es zu lang ist.
Codezy

19

In Swift würden Sie es so machen:

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

(Beachten Sie, dass sich die Funktionsweise der lineBreakMode-Konstante von der in ObjC unterscheidet.)


Möchten Sie näher erläutern, wie es anders ist?
Mike

Ich denke, ich meinte nur, dass die Benennung anders ist. Es hat sich wahrscheinlich in swift3 wieder geändert
Nathan

Der Zeilenumbruchmodus sollte standardmäßig auf
Zeilenumbruch

@ MobileMonin meiner Erfahrung ist das nicht immer der Fall. Vielleicht ändert IB es unter bestimmten Umständen?
Nathan

label.lineBreakMode = NSLineBreakByWordWrapping in Obj C
Nupur Sharma

2

Xcode 10, Swift 4

Das Umschließen des Textes für eine Beschriftung kann auch im Storyboard erfolgen, indem Sie die Beschriftung auswählen und den Attributinspektor verwenden.

Zeilen = 0 Zeilenumbruch = Zeilenumbruch

Geben Sie hier die Bildbeschreibung ein


2
Wenn Sie ein branBrand-New-Etikett verwenden und es direkt zur Ansicht hinzufügen, wird für mich immer noch ein einzeiliges Etikett (mit einer Breite größer als die Breite des Telefons) generiert, obwohl Zeilen auf 0 und Zeilenumbruch auf Zeilenumbruch gesetzt wurden. Gibt es eine andere Einstellung, die benötigt werden könnte? Muss ich zusätzlichen Code anhängen?
Phihag
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.