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.

Codezy
quelle

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.

Kendall Helmstetter Gelner
quelle
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.

Greg
quelle
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.)

Nathan
quelle
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

Naishta
quelle
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