2010-08-05 3 views
7

Ich habe ähnliche Fragen hier gesehen, kann aber immer noch herausfinden, warum es nicht funktioniert. n funktioniert nicht in UIlabel

Wie fügt man im mehrzeiligen UIlabel einen Zeilenumbruch hinzu (mit anderen Worten, einen neuen Absatz hinzufügen)?

Ich habe ein Label mit viel Text,

lbl.numberOfLines = 0; 
lbl.sizeToFit; 

aber ich bin immer noch so etwas wie dies bekommen: "Some Text hier \ Nand hier möchte ich neue Linie"

Danke

+0

Wie legen Sie den Text auf dem Etikett fest? Ich hatte dieses Problem einmal, weil die echte Zeichenfolge @ "etwas Text \ nmehr Text" war. – Sauleil

+0

Nein, ich verwende keine Escape in der ursprünglichen Zeichenfolge, ich habe einen einzelnen Backslash – Burjua

+0

AngeDeLaMort war korrekt. IB text löscht das \ char automatisch. Bitte sehen Sie meine Antwort. – Lytic

Antwort

14

UILabel wird nicht respektiert \ n, Sie können mit option-return (im Builder für Schnittstellen) erzwingen, wo Sie einen Zeilenumbruch wünschen.

Sie können ein UIWebView anstelle des Labels verwenden und dann können Sie formatieren, wie Sie möchten. (Und stellen Sie die lineBreakMode als AngeDeLaMort sagt oben.)

+0

Und vergessen Sie nicht, die Nummer der Zeile auf 0 setzen! – Grsmto

+0

Dies ist falsch! UILabel wird respektieren \ n, aber es wird \\ n nicht respektieren (aus gutem Grund!) :) – Lytic

1

Wenn Ihr String wirklich ok ist, vielleicht können Sie versuchen, auch diese Zeile hinzufügen:

lbl.lineBreakMode = UILineBreakModeWordWrap; 
+0

Ich habe es versucht, aber es hilft nicht (( – Burjua

3

tatsächlich gibt es eine Möglichkeit, das zu tun. versuchen

unichar chr[1] = {'\n'}; 
NSString *singleCR = [NSString stringWithCharacters:(const unichar *)chr length:1]; 
    [yourLabel setText:[NSString stringWithFormat:@"new%@line",singleCR]]; 
+0

es funktioniert nicht ?? – prajakta

+0

das funktioniert gut von mir. – boreas

0

Ich weiß, es alte Frage ist, aber ich frage mich - das Problem lbl.sizeToFit; sein könnte?

Wenn Sie Frame wie CGRectMake (0,0,300,300) setzen könnten - löst das das Problem? Weil \n auf meiner Seite funktioniert.

19

Dies ist eine alte Frage, aber wollte nur wissen lassen, dass \r wirkt wie ein Zauber :)

6

Sie können versuchen, diese:

lbl.text = @"My \n label"; 
lbl.numberofLines = 0; 
+1

Es funktioniert für mich. Danke :) –

4

Diese Arbeit sollte:

lbl.lineBreakMode = NSLineBreakByWordWrapping; 
lbl.numberOfLines = 0; 
+0

Danke, gute Eins :) :) –

0
NSCharacterSet *charSet = NSCharacterSet.newlineCharacterSet; 
NSString *formatted = [[unformatted componentsSeparatedByCharactersInSet:charSet] componentsJoinedByString:@"\n"]; 
1

Ihr Problem kann anders sein ... aber meiner war ein wörtliches Zeichen \n, das ist eigentlich \\n im Speicher.

Ich löste es mit:

label.text = [rawText [email protected]"\\n" withString:@"\n"]; 

Sie müssen noch Zeilenumbruch-Modus sowie NumberOfLines für sie an die Arbeit.

1

Verwendung Strg + Enter in der Storyboard und Anzahl von Zeilen als 0

0

UILabel Verwendung \ n gemacht neue Zeile machen. \ n brauchen einen Platz auf der Rückseite.

+0

Ein Platz ist ** nicht ** benötigt in den Rücken. – Dopapp

+0

Es ist hilfreicher, wenn Sie ein Beispiel zeigen, wenn Sie eine Frage beantworten. Vielen Dank! – cb4

0

Dies ist eine alte Frage, aber wenn jemand möchte von Interface Builder zu tun.dann ist es leicht und einfach

wählen Label und Änderungstyp standardmäßig zugeschrieben es Ebene

enter image description here

jetzt ist, wo immer Sie wollen \ n es nur Alt + Enter und Sie wird neue Zeile bekommen

hoffe, es ist hilfreich für jemanden, der Interface Builder verwendet, um dies zu erreichen