UILabel - Texto de Wordwrap


150

¿Hay alguna manera de tener un texto de etiqueta para envolver palabras según sea necesario? Tengo los saltos de línea establecidos en el ajuste de línea y la etiqueta es lo suficientemente alta para dos líneas, pero parece que solo se ajustará en los saltos de línea. ¿Tengo que agregar saltos de línea para que se ajuste correctamente? Solo quiero que se ajuste si no puede caber horizontalmente.

Respuestas:


301

Si establece numberOfLinesen 0 (y la etiqueta para ajustar la palabra), la etiqueta se ajustará automáticamente y usará tantas líneas como sea necesario.

Si está editando un UILabelen IB, puede ingresar varias líneas de texto presionando option+ return para obtener un salto de línea; returnsolo finalizará la edición.


124
Para aclarar novatos como yo, esto sería: cell.textLabel.numberOfLines = 0; cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;
Brian Moeskau

46
En iOS 6 y posterior, use NSLineBreakByWordWrapping, no UILineBreakModeWordWrap.
Aaron Brager

3
También puede necesitar lo siguiente: label.autoresizingMask = UIViewAutoresizingFlexibleHeight;
William Grand

66
label.lineBreakMode = .ByWordWrappingy label.numberOfLines = 0rápido
AFraser

9
Para cualquiera que no sea obvio (como yo): El UILabel debe tener algún tipo de límite en su ancho (ya sea por una restricción de ancho real o por restricciones de margen); de lo contrario no se envolverá.
jcady

27

UILabel tiene una propiedad lineBreakMode que puede establecer según sus requisitos.


11
"Tengo los saltos de línea establecidos en el ajuste de palabra". Esto solo se ajusta a los saltos de línea reales, no se romperá automáticamente una vez que sea demasiado largo.
Codezy

19

En Swift lo harías así:

    label.lineBreakMode = NSLineBreakMode.ByWordWrapping
    label.numberOfLines = 0

(Tenga en cuenta que la forma en que funciona la constante lineBreakMode es diferente a la de ObjC)


¿Te importaría explicar cómo es diferente?
Mike

Creo que quise decir solo que el nombre es diferente. Probablemente ha cambiado nuevamente en swift3
Nathan

El modo de salto de línea debe establecerse en ajuste de palabras predeterminado
MobileMon

@MobileMonin mi experiencia que no siempre es el caso. ¿Quizás IB lo cambia en algunas circunstancias?
Nathan

label.lineBreakMode = NSLineBreakByWordWrapping en Obj C
Nupur Sharma

2

Xcode 10, Swift 4

El ajuste del texto para una etiqueta también se puede hacer en Storyboard seleccionando la etiqueta y utilizando el Inspector de atributos.

Líneas = 0 lineBreak = Ajuste de línea

ingrese la descripción de la imagen aquí


2
Usando una etiqueta branBrand-New, agregándola directamente a la vista, esto todavía genera una etiqueta de una sola línea (con un ancho mayor que el ancho del teléfono) para mí, a pesar de establecer líneas en 0 y salto de línea en Word Wrap. ¿Hay otra configuración que podría ser necesaria? ¿Necesito adjuntar código adicional?
phihag
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.