158 votos

¿Cómo añadir un salto de línea para UILabel?

Veamos que tengo una cadena con este aspecto:

NSString *longStr = @"AAAAA\nBBBBB\nCCCCC";  

¿Cómo hago para que la UILabel muestre el mensaje así

AAAAA
BBBBB
CCCCC

No creo que \n es reconocido por UILabel, así que ¿hay algo que pueda poner dentro de NSString para que UILabel sepa que tiene que crear un salto de línea ahí? Muchas gracias de antemano.

243voto

Gerry Puntos 2710

Utilice \n como el que está utilizando en su cadena.

Establezca numberOfLines en 0 para permitir cualquier número de líneas.

label.numberOfLines = 0;

Actualizar el marco de la etiqueta para que coincida con el tamaño del texto utilizando sizeWithFont: . Si no lo hace, su texto quedará centrado o cortado verticalmente.

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);

128voto

Marco Puntos 3763

Utilice la opción de retorno cuando escriba en el pequeño cuadro del Interface Builder para insertar un salto de línea ( \n ). En los atributos de la etiqueta del Interface Builder, establezca # Lines = 0.

110voto

ladhani Puntos 987

Si se lee una cadena desde un archivo XML, el salto de línea \n en esta cadena no funcionará en UILabel texto. El \n no se analiza como un salto de línea.

He aquí un pequeño truco para resolver este problema:

// correct next line \n in string from XML file
NSString *myNewLineStr = @"\n";
myLabelText = [myLabelText stringByReplacingOccurrencesOfString:@"\\n" withString:myNewLineStr];

myLabel.text = myLabelText;

Por lo tanto, hay que sustituir el \n en su cadena por una parte analizada \n en un código duro NSString .

Aquí están mis otras configuraciones de etiquetas:

myLabel.numberOfLines = 0;
myLabel.backgroundColor = [UIColor lightGrayColor];
myLabel.textColor = [UIColor redColor]; 
myLabel.font = [UIFont fontWithName:@"Helvetica Neue" size:14.0];   
myLabel.textAlignment = UITextAlignmentCenter;

Lo más importante es establecer numberOfLines a 0 (= número ilimitado de líneas en la etiqueta).

Ni idea de por qué Apple ha decidido no analizar \n en cadenas leídas de XML?

Espero que esto ayude.

24voto

Dan Puntos 8469

Tienes que poner el numberOfLines de la propiedad en el UILabel . El valor por defecto es 1 si lo pones en 0 eliminará todos los límites.

14voto

AndyOng Puntos 71

Es importante tener en cuenta que es \n (barra invertida) en lugar de /n .

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X