ios iphone uilabel newline line-breaks

ios - ¿Cómo agregar un salto de línea para UILabel?



iphone newline (19)

// NO olvides poner numberOfLines a cero

UILabel* locationTitle = [[UILabel alloc] initWithFrame:CGRectMake(5, 30, 230, 40)]; locationTitle.font = [UIFont systemFontOfSize:13.0]; locationTitle.numberOfLines = 0; locationTitle.text = [NSString stringWithFormat:@"Eaton industries pvt. Ltd /nUK Apr 12"]; [cell addSubview:locationTitle];

Veamos que tengo una cuerda como esta:

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

¿Cómo hago para que la UILabel muestre un mensaje como este?

AAAAA
BBBBB
CCCCC

No creo que /n sea ​​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 allí?


En Swift 2.2,> iOS 8

He establecido Líneas = 0 en el Guión gráfico, bajo el Inspector de atributos y he vinculado una salida de referencia a la etiqueta. A continuación, utilice en el controlador de esta manera:

@IBOutlet weak var listLabel: UILabel! override func viewDidLoad() { ... listLabel.text = "Line 1/nLine 2/nLine 3/nLine 4/nLine 5/nLine 6/nLine 7/nLine 8" }


En Xcode 6, puede usar / n incluso dentro de una cadena cuando usa ajuste de palabra. Funcionará. Así por ejemplo:

UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(0, 100, screenRect.size.width, 50)]; label.textAlignment = NSTextAlignmentCenter; label.text = @"This will be on the first line/nfollowed by a line under it."; label.lineBreakMode = UILineBreakModeWordWrap; label.numberOfLines = 0;


En el generador de interfaces, puede usar Ctrl + Enter para insertar /n en la posición que desee. De esta manera se podría implementar la siguiente situación.

aaa
aaaaaaa


En mi caso, / n no funcionaba, solucioné el problema manteniendo el número de líneas en 0 y copié y pegué el texto con la nueva línea, por ejemplo, en lugar de Hello / n World i pegado

Hola

Mundo

en el constructor de interfaces.


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


He enfrentado el mismo problema, y ​​aquí es cómo resolví el problema. Espero que esto sea de ayuda para alguien.

// Swift 2

lblMultiline.lineBreakMode = .ByWordWrapping // or use NSLineBreakMode.ByWordWrapping lblMultiline.numberOfLines = 0

// C objetivo

lblMultiline.lineBreakMode = NSLineBreakByWordWrapping; lblMultiline.numberOfLines = 0;

// C # (Xamarin.iOS)

lblMultiline.LineBreakMode = UILineBreakMode.WordWrap; lblMultiline.Lines = 0;


Me parece mal cambiar el tamaño de los marcos de las etiquetas, especialmente cuando se utiliza la función de reproducción automática. Usar el método appendFormat parece más apropiado. Aquí está mi ejemplo:

NSMutableString *list = [[NSMutableString alloc] init]; NSArray *textArray = @[@"AAAA", @"BBBB"]; for (NSString *string in textArray) { [list appendFormat:@"%@/n", string.mutableCopy]; } self.label.text = list; self.label.numberOfLines = 0;


Para cualquier otra persona que pueda tener problemas con sizeWithFont:constrainedToSize:lineBreakMode: o cualquiera que cambie a ios8 (el método está obsoleto a partir de ios7), ajusté mi altura usando sizeToFit en sizeToFit lugar.

UILabel *label; label.numberOfLines = 0; // Setup label with desired settings ... [label sizeToFit]; label.frame = CGRectMake(label.frame.origin.x, // Or use any desired origin label.frame.origin.y, label.frame.size.width, // Or use any desired width label.frame.size.height);


Si configura las propiedades de UILable de Plain a Attributed ... UILabel mantendrá el texto multilínea sin importar cuántos párrafos a lo largo de la altura y el ancho de UILabel se ajusten para ajustarse al área de pantalla en la que desea mostrar el texto.


Si lees una cadena de un archivo XML, el salto de línea /n en esta cadena no funcionará en el texto de UILabel . El /n no se analiza a un salto de línea.

Aquí hay 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, debe reemplazar la parte /n analizar en su cadena por una /n analizada en una NSString codificada.

Aquí están mis otras configuraciones de etiqueta:

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 en 0 (= número ilimitado de líneas en la etiqueta).

¿No tiene idea de por qué Apple ha elegido no analizar /n en cadenas leídas de XML?

Espero que esto ayude.


Si usa una UILabel , debe recordar que la configuración predeterminada es 1 línea, por lo que no importa cuántos saltos agregue ( /n o /r ), debe asegurarse de que esté configurado en más de una línea para que Se podría permitir añadir más líneas.

Una alternativa es utilizar UITextView que está realmente diseñado para multilíneas.

Puede lograrlo fácilmente en la sección de atributos XCode de UILabel, vea la captura de pantalla:


Simplemente utilizando label.numberOfLines = 0;


Solo hazlo asi

NSString * strCheck = @"A/nB"; strCheck = [strCheck stringByReplacingOccurrencesOfString:@"//n" withString:@"/n"]; //This is to prevent for fetching string from plist or data structure label.numberOfLines = 0; label.lineBreakMode = NSLineBreakByWordWrapping; label.text = strCheck;


Use /n como está usando en su cadena.

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

label.numberOfLines = 0;

Actualice el marco de la etiqueta para que coincida con el tamaño del texto usando sizeWithFont: Si no lo hace, su texto se centrará verticalmente o se cortará.

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

Actualización: Reemplazo para desaprobado

sizeWithFont:constrainedToSize:lineBreakMode:

Referencia, Reemplazo para tamaño desaprobado ConFont: en 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);


Use la opción de retorno cuando escriba en el cuadro pequeño en Interface Builder para insertar un salto de línea (/ n). En los atributos de la etiqueta de Interface Builder, defina # Líneas = 0.

Seleccione la etiqueta y luego cambie la propiedad de Líneas a 0 como en la imagen anterior, y luego use / n en su cadena para el salto de línea.


UILabel establecer la propiedad numberOfLines en la UILabel . El valor predeterminado es 1 , si lo establece en 0 , eliminará todos los límites.


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


textLabel.text = @"/nAAAAA/nBBBBB/nCCCCC"; textLabel.numberOfLines = 3; //As you want - AAAAA/nBBBBB/nCCCCC textLabel.lineBreakMode = UILineBreakModeWordWrap; NSLog(@"The textLabel text is - %@",textLabel.text);