Etiqueta multilínea de iOS en el generador de interfaces


131

¿Cómo puedo hacer un UILabelgenerador de interfaz multilínea para iOS? Probé el UITextViewpero no satisfizo mis necesidades.

¿Cómo puedo agregar multilínea (texto) en la etiqueta?


¿Puedes explicar por qué id no satisfizo tus necesidades? TextView con solo lectura es lo mismo que una etiqueta multilínea.
Shreesh

No parece haber propiedad de color de texto resaltado.
Samuli Lehtonen

77
Para otros que visiten esta pregunta, no siga la respuesta aceptada de establecer líneas en 5 o n. En su lugar, configúrelo en 0 (tipo de infinito). Verifique la respuesta de vijay a continuación.
GoodSp33d

Respuestas:


178

Puede usar la numberOfLinespropiedad que define el número máximo de líneas que puede tener una etiqueta. Por defecto, es 1. Establecerlo en 0significa que la etiqueta tendrá líneas ilimitadas .

Puedes hacerlo en código:

textLabel.numberOfLines = 5 // for example

O en Interface Builder:


Lo intenté, funciona cuando estoy escribiendo la etiqueta, pero cuando presiono enter para aceptarlo, todo va en una línea.
Samuli Lehtonen

3
¿Y cuál es el widthde tu etiqueta?
akashivskyy

8
Ok, lo tengo ahora, aumentó la altura, eso lo hizo. ¡Gracias!
Samuli Lehtonen

Puede establecer Líneas en 0 para líneas ilimitadas.
paulmelnikow 01 de

2
Consulte también esta respuesta que explica cómo escribir una etiqueta multilínea en IB: stackoverflow.com/a/992511/893113
paulmelnikow

117

Presione Control+ Enterpara agregar una línea en UILabel en Interface Builder / Storyboard.


2
Gracias, eso es lo que estaba tratando de hacer :)
mcont

¡Esta debería ser la solución!
SunnySonic

14
Buena esa. Pero supongo que "Q" no es necesario
Rendel

1
@Oliver Logic no sale de Xcode ... No has leído correctamente. Dijo CONTROL + Q + ENTER (y no CMD + Q) ... Pero Rendel tiene razón, solo CONTROL + ENTER es suficiente aquí.
gaskbr

1
@Logic no sale de Xcode ... No has leído correctamente. Dijo CONTROL + Q + ENTER (y no CMD + Q) ... Pero Rendel tiene razón, solo CONTROL + ENTER es suficiente aquí.
gaskbr

47

Gracias AppleVijay!

También para llamar a sizeToFit, así:

label.lineBreakMode = UILineBreakModeWordWrap;
label.numberOfLines = 0;
[label sizeToFit];

La altura se calculará automáticamente.


11
Nota: UILineBreakModeWordWrap está en desuso a partir de iOS6. Use [label setLineBreakMode: NSLineBreakWordWrapping]; en lugar.
John Feagans

55
Falta "Por". label.lineBreakMode = NSLineBreakByWordWrapping
user1872384

1
use NSLineBreakMode.ByWordWrapping en lugar de UILineBreakModeWordWrap para Swift
Deb

12

establezca el ancho de la etiqueta según lo necesite, luego use IB para configurar los saltos de línea en el ajuste de palabras

o usar con un código como este

Encontré una solución.

Solo hay que agregar el siguiente código:

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

5

Establezca el número de líneas cero para la información de texto dinámico, será útil cuando su texto varíe.

Programaticamente (Swift 3)

var label = UILabel()
let stringValue = "iOS\nmultiline\nlabel\nin\nInterface\nbuilder"
label.text = stringValue
label.numberOfLines = 0 // Set 0, if number of lines not specified.
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

Usando Inetrface Builder

ingrese la descripción de la imagen aquí

Nota: No es necesario establecerlo Minimum Font Scale, pero es bueno tener un factor de escala mínimo para ajustar el texto en el marco de la etiqueta.


2

El número de líneas es visible en IB con Plain UILabels establece el campo de líneas como 0. Creará varias líneas según el espacio proporcionado a la etiqueta.


1

En iOS7 (Xcode5) debe establecer las líneas de UILabel 0para una entrada múltiple ilimitada en el guión gráfico.
Lo más importante es establecer la height of the UILabellata puede contener las líneas de entrada que va a configurar.


0
textLabel.lineBreakMode = UILineBreakModeWordWrap;

textLabel.numberOfLines = 0;

CGSize size =  [[[arrNewsFeed objectAtIndex:row] objectForKey:@"c"]  sizeWithFont:[UIFont systemFontOfSize:14.0]  constrainedToSize:CGSizeMake(188, CGFLOAT_MAX)
                                                                     lineBreakMode:NSLineBreakByTruncatingTail];

textLabel.frame = (CGRect){.origin = cell.lblNewsDescription.frame.origin, .size = size};

0

Si establece la propiedad numberOfLines igual a 0, la etiqueta se ajustará automáticamente al número requerido de líneas del texto dado.


0

Había estado luchando con esto por mucho tiempo. Solo quería que el texto de mi etiqueta apareciera en la segunda línea. Pero haga lo que haga, simplemente desbordaría la caja de UILabel. Para mí, el cambio de tamaño de autor en el inspector de tamaño funcionó. Solución simple

Puede ser que alguien pueda encontrar útil quien está buscando algo similar.


-2

Para el código X 7.2

  1. - Seleccione UILabel

  2. - Inspector de atributos

  3. - Texto - Seleccione Atribuido

Después de esto, puede ver algunos atributos más que puede agregar a su etiqueta, en los que también puede encontrar el número de Líneas . Que hacen que su etiqueta sea multilínea .

Imagen de código X para un UILabel multilínea


El número de líneas es visible en IB con Plain UILabels.
Graham Lea
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.