2010-08-05 21 views
7

He visto preguntas similares aquí, pero todavía puedo descubrir por qué no está funcionando. n no funciona en UIlabel

Cómo agregar un salto de línea (en otras palabras, agregar un nuevo párrafo) en UIlabel de líneas múltiples?

que tienen una etiqueta con una gran cantidad de texto,

lbl.numberOfLines = 0; 
lbl.sizeToFit; 

pero sigo teniendo algo como esto: "Algunos texto aquí \ ny aquí Quiero nueva línea"

Gracias

+0

¿cómo se establece el texto en la etiqueta? Tuve este problema una vez porque la cadena real era @ "texto algo \\ nmore texto". – Sauleil

+0

No, no uso el escape en la secuencia original, tengo una barra diagonal inversa – Burjua

+0

AngeDeLaMort era correcta. El texto de IB escapa automáticamente del \ char. Por favor mira mi respuesta. – Lytic

Respuesta

14

UILabel no lo respetará \ n, puede usar la opción de devolución (en el constructor de interfaz) para forzar dónde desea un salto de línea.

Puede usar un UIWebView en lugar de la etiqueta y luego puede formatear cómo lo desee. (Y configure lineBreakMode como AngeDeLaMort dice más arriba)

+0

Y no olvides poner el número de línea en 0! – Grsmto

+0

Esto es incorrecto! UILabel lo respetará \ n, pero no lo respetará \\ n (por una buena razón!) :) – Lytic

1

Si la cadena es realmente bueno, tal vez puede intentar añadir esta línea, así:

lbl.lineBreakMode = UILineBreakModeWordWrap; 
+0

Lo he intentado, pero no ayuda (( – Burjua

3

En realidad, hay una forma de hacerlo. tratar

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

no funciona ?? – prajakta

+0

esto funciona bien por mí. – boreas

0

Sé que es cuestión de edad, pero me preguntaba - podría ser el problema lbl.sizeToFit;?

si pudiera establecer el marco como CGRectMake (0,0,300,300) - ¿eso resuelve el problema? Porque \n funciona de mi lado.

19

Ésta es una vieja pregunta, pero sólo quería hacerle saber que \r funciona como un encanto :)

6

puede probar esta uno:

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

Su trabajo para mí. Gracias :) –

4

Esto debería funcionar:

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

Gracias, bueno uno +1 :) –

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

Tu problema puede ser diferente ... pero el mío fue un personaje literal \n, que en realidad es \\n en la memoria.

Lo resuelto con:

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

usted todavía tiene que establecer el modo de salto de línea, así como numberOfLines para que funcione.

1

uso Ctrl + Enter en guión gráfico, y crea número de líneas como 0

0

uso UILabel \ n nueva línea de hecho. \ n necesita un espacio en la parte posterior.

+0

Un espacio no es ** necesario ** en la espalda. – Dopapp

+0

Es más útil si muestra un ejemplo cuando responde una pregunta. ¡Gracias! – cb4

0

Esta es una vieja pregunta, pero si alguien quiere hacerla desde el constructor de interfaces.entonces es fácil y simple

seleccione la etiqueta y el cambio de tipo de atribuye por defecto es llanura

enter image description here

ahora donde quieres \ n no sólo tiene que utilizar Alt + Enter y obtendrá la nueva línea

Espero que sea útil para alguien que está usando el constructor de interfaz para lograr esto