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?

Samuli Lehtonen
fuente
¿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:

akashivskyy
fuente
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.

usuario1233894
fuente
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.

Bogdan
fuente
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;
Vijay-Apple-Dev.blogspot.com
fuente
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.

Krunal
fuente
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.

siddhant
fuente
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.

Artesano
fuente
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};
Tanvi Jain
fuente
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.

Pablo Marrufo
fuente
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.

Harshal Karande
fuente
-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

codeCraft
fuente
El número de líneas es visible en IB con Plain UILabels.
Graham Lea