Verwenden \n
Sie, wie Sie in Ihrer Zeichenfolge verwenden.
Setzen Sie numberOfLines auf 0, um eine beliebige Anzahl von Zeilen zuzulassen.
label.numberOfLines = 0;
Aktualisieren Sie den Beschriftungsrahmen mit der Größe des verwendeten Texts sizeWithFont:
. Wenn Sie dies nicht tun, wird Ihr Text vertikal zentriert oder abgeschnitten.
UILabel *label; // set frame to largest size you want
...
CGSize labelSize = [label.text sizeWithFont:label.font
constrainedToSize:label.frame.size
lineBreakMode:label.lineBreakMode];
label.frame = CGRectMake(
label.frame.origin.x, label.frame.origin.y,
label.frame.size.width, labelSize.height);
Update: Ersatz für veraltet
sizeWithFont:constrainedToSize:lineBreakMode:
Referenz, Ersatz für veraltete GrößeWithFont: in iOS 7?
CGSize labelSize = [label.text sizeWithAttributes:@{NSFontAttributeName:label.font}];
label.frame = CGRectMake(
label.frame.origin.x, label.frame.origin.y,
label.frame.size.width, labelSize.height);
UILabel
hat noch keineorigin
nor-size
Eigenschaft unter iOS? Es sollte wahrscheinlich seinlabel.frame.origin.x
usw.Verwenden Sie die Option-Return, wenn Sie das kleine Feld in Interface Builder eingeben, um einen Zeilenvorschub (\ n) einzufügen. Setzen Sie in den Label-Attributen des Interface Builder # Lines = 0.
Wählen Sie die Beschriftung aus, ändern Sie die Lines-Eigenschaft wie im obigen Bild auf 0 und verwenden Sie dann \ n in Ihrer Zeichenfolge für den Zeilenumbruch.
quelle
Wenn Sie eine Zeichenfolge aus einer XML-Datei lesen,
\n
funktioniert der Zeilenumbruch in dieser Zeichenfolge nicht imUILabel
Text. Das\n
wird nicht zu einem Zeilenumbruch analysiert.Hier ist ein kleiner Trick, um dieses Problem zu lösen:
Sie müssen also den nicht analysierten
\n
Teil in Ihrer Zeichenfolge durch einen\n
in einem fest codierten Teil analysierten ersetzenNSString
.Hier sind meine anderen Etiketteneinstellungen:
Am wichtigsten ist es,
numberOfLines
auf0
(= unbegrenzte Anzahl von Zeilen in der Beschriftung) zu setzen.Keine Ahnung, warum Apple sich dafür entschieden hat,
\n
aus XML gelesene Zeichenfolgen nicht zu analysieren ?Hoffe das hilft.
quelle
\n
wenn Zeichenfolgen von Parse.com abgerufen werden (ich denke, es wird auch passieren, wenn Zeichenfolgen von anderen APIs abgerufen werden)Im Interface Builder können Sie mit Ctrl+ an die gewünschte Position Entereinfügen
/n
. Auf diese Weise könnte die folgende Situation implementiert werdenaaa
aaaaaaa
quelle
Sie müssen die
numberOfLines
Eigenschaft auf dem festlegenUILabel
. Der Standardwert ist 1 , wenn Sie ihn auf 0 setzen , werden alle Grenzwerte entfernt.quelle
Es ist wichtig zu beachten, dass es
\n
eher (Backslash) als/n
.quelle
In Swift 2.2> iOS 8
Ich habe im Storyboard unter Attributinspektor Zeilen = 0 festgelegt und einen Referenzierungsausgang mit dem Etikett verknüpft. Dann verwenden Sie in Controller wie folgt:
quelle
// Vergiss nicht, numberOfLines auf Null zu setzen
quelle
Mach es einfach so
quelle
Unter Xcode 6 können Sie bei Verwendung des Zeilenumbruchs nur \ n auch innerhalb einer Zeichenfolge verwenden. Es wird klappen. Also zum Beispiel:
quelle
Wenn Sie a verwenden
UILabel
, müssen Sie sich daran erinnern, dass die Standardeinstellung 1 Zeile ist. Es spielt also keine Rolle, wie viele Unterbrechungen Sie hinzufügen (\n
oder\r
), Sie müssen sicherstellen, dass mehr als eine Zeile vorhanden ist, damit sie angehängt werden kann mehr Zeilen.Eine Alternative ist die Verwendung,
UITextView
die wirklich für Multilines gedacht ist.Sie können dies einfach im XCode-Attributabschnitt des UILabels erreichen, siehe Screenshot:
quelle
Für diejenigen unter Ihnen, die eine einfache Lösung wünschen, gehen Sie im Eingabefeld Textbeschriftung wie folgt vor:
Stellen Sie sicher, dass Ihre Zahlenlinien auf 0 gesetzt sind.
Alt + Eingabetaste
(Alt ist Ihre Optionstaste)
Prost!
quelle
Nur mit
label.numberOfLines = 0;
quelle
In meinem Fall funktionierte auch \ n nicht. Ich habe das Problem behoben, indem ich die Anzahl der Zeilen auf 0 gehalten und den Text kopiert und mit einer neuen Zeile eingefügt habe, z. B. anstelle von Hello \ n World, das ich eingefügt habe
im Interface Builder.
quelle
In xCode 11, Swift 5
\n
funktioniert das einwandfrei , versuchen Sie den folgenden Code:quelle
quelle
Für alle anderen, die Probleme mit
sizeWithFont:constrainedToSize:lineBreakMode:
ios8 haben könnten oder auf ios8 wechseln (die Methode ist ab ios7 veraltet), habe ichsizeToFit
stattdessen meine Körpergröße angepasst .quelle
quelle
Es scheint mir falsch, die Etikettenrahmengrößen zu ändern, insbesondere wenn Autolayout verwendet wird. Die Verwendung der appendFormat-Methode erscheint angemessener. Hier ist mein Beispiel:
quelle
Wenn Sie Ihre UILable-Eigenschaften von "Einfach" auf "Attributiert" festlegen, enthält das UILabel mehrzeiligen Text, unabhängig davon, wie viele Absätze zusammen mit Ihrer UILabel-Höhe und -Breite auf den Bildschirmbereich eingestellt sind, in dem Sie den Text anzeigen möchten.
quelle
Ich habe das gleiche Problem gehabt, und hier ist, wie ich das Problem gelöst habe. Hoffe das wird für jemanden hilfreich sein.
// Swift 2
// Ziel c
// C # (Xamarin.iOS)
quelle