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?

Samuli Lehtonen
quelle
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:

akashivskyy
quelle
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.

user1233894
quelle
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.

Bogdan
quelle
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;
Vijay-Apple-Dev.blogspot.com
quelle
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.

Krunal
quelle
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.

Siddhant
quelle
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.

Handwerker
quelle
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};
Tanvi Jain
quelle
0

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

Pablo Marrufo
quelle
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.

Harshal Karande
quelle
-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

codeCraft
quelle
Die Anzahl der Zeilen ist in IB mit einfachen UILabels sichtbar.
Graham Lea