Mehrzeiliges iOS-Label im Interface Builder


131

Wie kann ich UILabelim Interface Builder für iOS eine Mehrzeiligkeit erstellen? Ich habe es versucht, UITextViewaber es entsprach nicht ganz meinen Bedürfnissen.

Wie kann ich dem Etikett mehrzeilig (Text) hinzufügen?


Können Sie erklären, warum id nicht Ihren Anforderungen entsprach? TextView mit schreibgeschütztem Text entspricht einem mehrzeiligen Etikett.
Shreesh

Es scheint keine hervorgehobene Eigenschaft für die Textfarbe zu geben.
Samuli Lehtonen

7
Befolgen Sie für andere, die diese Frage besuchen, nicht die akzeptierte Antwort, indem Sie die Zeilen auf 5 oder setzen n. Setzen Sie es stattdessen auf 0 (Art von unendlich). Überprüfen Sie die Antwort von Vijay unten.
GoodSp33d

Antworten:


178

Sie können eine numberOfLinesEigenschaft verwenden, die die maximale Anzahl von Zeilen definiert , die eine Beschriftung haben kann. Standardmäßig ist es 1. Wenn Sie es auf setzen 0, hat das Etikett unbegrenzte Zeilen .

Sie können es im Code tun:

textLabel.numberOfLines = 5 // for example

Oder im Interface Builder:


Ich habe versucht, es funktioniert, wenn ich das Etikett schreibe, aber wenn ich die Eingabetaste drücke, um es zu akzeptieren, wird nur alles in einer Zeile angezeigt.
Samuli Lehtonen

3
Und was ist widthvon deinem Label?
Akashivskyy

8
Ok, ich habe es jetzt bekommen, die Höhe erhöht, das hat es gemacht. Vielen Dank!
Samuli Lehtonen

Sie können Zeilen für unbegrenzte Zeilen auf 0 setzen.
Paulmelnikow

2
Siehe auch diese Antwort, in der erklärt wird, wie ein mehrzeiliges Etikett in IB eingegeben wird
paulmelnikow

117

Drücken Sie Control+Enter eine Linie in UILabel in Interface Builder / Storyboard hinzuzufügen.


2
Danke, das habe ich versucht :)
mcont

Dies sollte die Lösung sein!
SunnySonic

14
Schön. Aber "Q" ist wohl nicht nötig
Rendel

1
@Oliver Logic beendet Xcode nicht ... Sie haben nicht richtig gelesen. Er sagte CONTROL + Q + ENTER (und nicht CMD + Q). Aber Rendel hat Recht, nur CONTROL + ENTER reicht hier aus.
gaskbr

1
@Logic beendet Xcode nicht ... Sie haben nicht richtig gelesen. Er sagte CONTROL + Q + ENTER (und nicht CMD + Q). Aber Rendel hat Recht, nur CONTROL + ENTER reicht hier aus.
Gaskbr

47

Vielen Dank, AppleVijay!

Auch um sizeToFit wie folgt aufzurufen:

label.lineBreakMode = UILineBreakModeWordWrap;
label.numberOfLines = 0;
[label sizeToFit];

Die Höhe wird automatisch berechnet.


11
Hinweis: UILineBreakModeWordWrap ist ab iOS6 veraltet. Verwenden Sie [label setLineBreakMode: NSLineBreakWordWrapping]; stattdessen.
John Feagans

5
Fehlendes "By". label.lineBreakMode = NSLineBreakByWordWrapping
user1872384

1
Verwenden Sie NSLineBreakMode.ByWordWrapping anstelle von UILineBreakModeWordWrap für Swift
Deb

12

Stellen Sie die Breite des Etiketts so ein, wie Sie es benötigen. Verwenden Sie dann IB, um Zeilenumbrüche auf Zeilenumbruch zu setzen

oder mit Code wie diesem verwenden

Ich habe eine Lösung gefunden.

Man muss nur den folgenden Code hinzufügen:

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

5

Setzen Sie die Anzahl der Zeilen für dynamische Textinformationen auf Null. Dies ist hilfreich, wenn Ihr Text variiert.

Programmatisch (Swift 3)

var label = UILabel()
let stringValue = "iOS\nmultiline\nlabel\nin\nInterface\nbuilder"
label.text = stringValue
label.numberOfLines = 0 // Set 0, if number of lines not specified.
label.lineBreakMode = .byTruncatingTail // or .byWrappingWord
label.minimumScaleFactor = 0.8 . // It is not required but nice to have a minimum scale factor to fit text into label frame

Verwenden von Inetrface Builder

Geben Sie hier die Bildbeschreibung ein

Hinweis: Es muss nicht festgelegt werden Minimum Font Scale, aber es ist schön, einen minimalen Skalierungsfaktor zu haben, um Text in den Etikettenrahmen einzupassen.


2

Die Anzahl der Zeilen ist in IB sichtbar, wobei das Feld für einfache UILabels-Zeilen auf 0 gesetzt ist. Es werden mehrere Zeilen gemäß dem bereitgestellten Platz auf dem Etikett erstellt.


1

In iOS7 (Xcode5) sollten Sie die Zeilen von UILabel auf 0für unbegrenzte Mehrfacheingaben im Storyboard setzen.
Am wichtigsten ist es, die height of the UILabelDose so einzustellen , dass sie die Eingabezeilen enthält, die Sie einstellen möchten.


0
textLabel.lineBreakMode = UILineBreakModeWordWrap;

textLabel.numberOfLines = 0;

CGSize size =  [[[arrNewsFeed objectAtIndex:row] objectForKey:@"c"]  sizeWithFont:[UIFont systemFontOfSize:14.0]  constrainedToSize:CGSizeMake(188, CGFLOAT_MAX)
                                                                     lineBreakMode:NSLineBreakByTruncatingTail];

textLabel.frame = (CGRect){.origin = cell.lblNewsDescription.frame.origin, .size = size};

0

Wenn Sie die Eigenschaft numberOfLines auf 0 setzen, wird die Beschriftung automatisch an die erforderliche Anzahl von Zeilen des angegebenen Textes angepasst.


0

Ich hatte lange damit zu kämpfen. Ich wollte nur, dass mein Beschriftungstext in der zweiten Zeile erscheint. Aber was auch immer ich tue, es würde nur die UILabel-Box überlaufen. Für mich hat das Ändern der automatischen Größenänderung im Größeninspektor funktioniert. Einfache Lösung.

Vielleicht findet es jemand hilfreich, der nach etwas Ähnlichem sucht.


-2

Für X-Code 7.2

  1. - Wählen Sie UILabel

  2. - Attributinspektor

  3. - Text - Wählen Sie Attributiert

Danach sehen Sie einige weitere Attribute, die Sie Ihrem Label hinzufügen können, in denen Sie auch die Anzahl der Zeilen finden . Was Ihr Label mehrzeilig macht .

X-Code-Image für ein mehrzeiliges UILabel


Die Anzahl der Zeilen ist in IB mit einfachen UILabels sichtbar.
Graham Lea
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.