éxito una texto tenga también tabla referencia que página pueden para múltiples módulo líneas logra juego indica hace habla formulario fila etiqueta estructurada escribir escribe emplea elemento definir define cómo cuando cuadro control conocido con como caracteres bien ios uilabel uitextview line-breaks multiline

ios - una - Múltiples líneas de texto en UILabel.



para definir un cuadro de texto en el que se pueden escribir múltiples líneas de texto se emplea: (25)

En C #, esto funcionó para mí dentro de UITableViewCell.

UILabel myLabel = new UILabel(); myLabel.Font = UIFont.SystemFontOfSize(16); myLabel.Lines = 0; myLabel.TextAlignment = UITextAlignment.Left; myLabel.LineBreakMode = UILineBreakMode.WordWrap; myLabel.MinimumScaleFactor = 1; myLabel.AdjustsFontSizeToFitWidth = true; myLabel.InvalidateIntrinsicContentSize(); myLabel.Frame = new CoreGraphics.CGRect(20, mycell.ContentView.Frame.Y + 20, cell.ContentView.Frame.Size.Width - 40, mycell.ContentView.Frame.Size.Height); myCell.ContentView.AddSubview(myLabel);

Creo que el punto aquí es:

myLabel.TextAlignment = UITextAlignment.Left; myLabel.LineBreakMode = UILineBreakMode.WordWrap; myLabel.MinimumScaleFactor = 1; myLabel.AdjustsFontSizeToFitWidth = true;

¿Hay alguna forma de tener varias líneas de texto en UILabel como en el UITextView o debo usar la segunda?


En IB, establezca el número de líneas a 0 (permite líneas ilimitadas)

Al escribir dentro del campo de texto usando IB, use "alt-return" para insertar una devolución y pasar a la siguiente línea (o puede copiar en un texto ya separado por líneas).


En esta función, pase la cadena que desea asignar en etiqueta y pase el tamaño de fuente en lugar de self.activityFont y pase la etiqueta en lugar de 235, ahora obtiene la altura de la etiqueta de acuerdo con su cadena. funcionará bien

-(float)calculateLabelStringHeight:(NSString *)answer { CGRect textRect = [answer boundingRectWithSize: CGSizeMake(235, 10000000) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:self.activityFont} context:nil]; return textRect.size.height; }


Encontré una solución.

Solo hay que añadir el siguiente código:

// Swift textLabel.lineBreakMode = .ByWordWrapping // or NSLineBreakMode.ByWordWrapping textLabel.numberOfLines = 0 // For Swift >= 3 textLabel.lineBreakMode = .byWordWrapping // notice the ''b'' instead of ''B'' textLabel.numberOfLines = 0 // Objective-C textLabel.lineBreakMode = NSLineBreakByWordWrapping; textLabel.numberOfLines = 0; // C# (Xamarin.iOS) textLabel.LineBreakMode = UILineBreakMode.WordWrap; textLabel.Lines = 0;

Respuesta antigua restaurada (para referencia y desarrolladores dispuestos a soportar iOS por debajo de 6.0):

textLabel.lineBreakMode = UILineBreakModeWordWrap; textLabel.numberOfLines = 0;

En el lado: ambos valores de enumeración rinden a 0 todos modos.


Establecido a continuación, ya sea en el código o en el guión gráfico

Label.lineBreakMode = NSLineBreakByWordWrapping; Label.numberOfLines = 0;

y, por favor, no olvide establecer las restricciones izquierda, derecha, superior e inferior para la etiqueta, de lo contrario no funcionará.


Estas cosas me ayudaron

Cambia estas propiedades de UILabel

label.numberOfLines = 0; label.adjustsFontSizeToFitWidth = NO; label.lineBreakMode = NSLineBreakByWordWrapping;

Y mientras da una cadena de entrada, use / n para mostrar diferentes palabras en diferentes líneas.

Ejemplo:

NSString *message = @"This /n is /n a demo /n message for /n " ;


Este código está devolviendo la altura del tamaño de acuerdo con el texto

+ (CGFloat)findHeightForText:(NSString *)text havingWidth:(CGFloat)widthValue andFont:(UIFont *)font { CGFloat result = font.pointSize+4; if (text) { CGSize size; CGRect frame = [text boundingRectWithSize:CGSizeMake(widthValue, 999) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:font} context:nil]; size = CGSizeMake(frame.size.width, frame.size.height+1); result = MAX(size.height, result); //At least one row } return result; }


Estoy de acuerdo con Jarred Olson, NSLineBreakByWordWrapping está predeterminado . Agregué la propiedad sizeToFit como la guía de Gurumoorthy Arumugam para arreglarla.

Si desea que la fuente dentro de su etiqueta se ajuste para que se ajuste a los límites de la etiqueta. Puedes usar :

textLabel.adjustsFontSizeToFitWidth = YES;

Gracias a todos.


La mejor solución que he encontrado (para un problema frustrante que debería haberse resuelto en el marco) es similar al de vaychick.

Solo establece el número de líneas a 0 en IB o en el código

myLabel.numberOfLines = 0;

Esto mostrará las líneas necesarias pero volverá a colocar la etiqueta de modo que esté centrada horizontalmente (de modo que una línea de 1 y 3 etiquetas de línea estén alineadas en su posición horizontal). Para arreglar ese complemento:

CGRect currentFrame = myLabel.frame; CGSize max = CGSizeMake(myLabel.frame.size.width, 500); CGSize expected = [myString sizeWithFont:myLabel.font constrainedToSize:max lineBreakMode:myLabel.lineBreakMode]; currentFrame.size.height = expected.height; myLabel.frame = currentFrame;


Puede usar /r para ir a la siguiente línea mientras llena la UILabel usando NSString .

UILabel * label; label.text = [NSString stringWithFormat:@"%@ /r %@",@"first line",@"seconcd line"];


Puedes hacerlo a través del Storyboard también:

  1. Seleccione la etiqueta en el controlador de vista
  2. En el Inspector de atributos, aumente el valor de la opción Línea (Presione Alt + Cmd + 4 para mostrar el Inspector de atributos)
  3. Haga doble clic en la etiqueta en el controlador de vista y escriba o pegue su texto
  4. Cambie el tamaño de la etiqueta y / o aumente el tamaño de la fuente para que se muestre todo el texto.

Si tienes que usar el:

myLabel.numberOfLines = 0;

También puede usar un salto de línea estándar ("/n") , en el código, para forzar una nueva línea.


Swift 4:

label.lineBreakMode = .byWordWrapping label.numberOfLines = 0 label.translatesAutoresizingMaskIntoConstraints = false label.preferredMaxLayoutWidth = superview.bounds.size.width - 10


Use esto para tener múltiples líneas de texto en UILabel :

textLabel.lineBreakMode = NSLineBreakByWordWrapping; textLabel.numberOfLines = 0;

Rápido:

textLabel.lineBreakMode = .byWordWrapping textLabel.numberOfLines = 0


Use story borad: seleccione la etiqueta para establecer el número de líneas a cero ...... O consulte esto


Ya respondí, pero también puedes hacerlo manualmente en el guión gráfico. En el Inspector de atributos de la etiqueta, puede cambiar los saltos de línea a ajuste de palabra (o ajuste de carácter).


deberias probar esto

-(CGFloat)dynamicLblHeight:(UILabel *)lbl { CGFloat lblWidth = lbl.frame.size.width; CGRect lblTextSize = [lbl.text boundingRectWithSize:CGSizeMake(lblWidth, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:lbl.font} context:nil]; return lblTextSize.size.height; }


Swift 3
Establezca el número de líneas cero para la información de texto dinámico, será útil para texto variable.

var label = UILabel() let stringValue = "A label/nwith/nmultiline text." label.text = stringValue label.numberOfLines = 0 label.lineBreakMode = .byTruncatingTail // or .byWrappingWord label.minimumScaleFactor = 0.8 . // It is not required but nice to have a minimum scale factor to fit text into label frame


intentemos esto

textLabel.lineBreakMode = NSLineBreakModeWordWrap; // UILineBreakModeWordWrap deprecated textLabel.numberOfLines = 0;


Try using this code: lblName.numberOfLines = 0; [lblName sizeToFit];


UILabel *helpLabel = [[UILabel alloc] init]; NSAttributedString *attrString = [[NSAttributedString alloc] initWithString:label]; helpLabel.attributedText = attrString; // helpLabel.text = label; helpLabel.textAlignment = NSTextAlignmentCenter; helpLabel.lineBreakMode = NSLineBreakByWordWrapping; helpLabel.numberOfLines = 0;

Por algunas razones no funciona para mí en iOS 6, no estoy seguro de por qué. Lo intenté con y sin texto atribuido. Alguna sugerencia.


UILabel *labelName = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 30)]; [labelName sizeToFit]; labelName.numberOfLines = 0; labelName.text = @"Your String..."; [self.view addSubview:labelName];


UILabel *textLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 150, 30)]; [textLabel sizeToFit]; textLabel.numberOfLines = 0; textLabel.text = @"Your String...";


myUILabel.numberOfLines = 0; myUILabel.text = @"your long string here"; [myUILabel sizeToFit];


textLabel.lineBreakMode = UILineBreakModeWordWrap; textLabel.numberOfLines = 0;

La solución anterior no funciona en mi caso. Estoy haciendo así:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { // ... CGSize size = [str sizeWithFont:[UIFont fontWithName:@"Georgia-Bold" size:18.0] constrainedToSize:CGSizeMake(240.0, 480.0) lineBreakMode:UILineBreakModeWordWrap]; return size.height + 20; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { // ... cell.textLabel.lineBreakMode = UILineBreakModeWordWrap; cell.textLabel.numberOfLines = 0; cell.textLabel.font = [UIFont fontWithName:@"Georgia-Bold" size:18.0]; } // ... UILabel *textLabel = [cell textLabel]; CGSize size = [text sizeWithFont:[UIFont fontWithName:@"Georgia-Bold" size:18.0] constrainedToSize:CGSizeMake(240.0, 480.0) lineBreakMode:UILineBreakModeWordWrap]; cell.textLabel.frame = CGRectMake(0, 0, size.width + 20, size.height + 20); //... }