2010-09-29 21 views
6

He estado buscando en toda la 'red para obtener información/ejemplos ...IPhone: ¿Cambiar el espaciado entre líneas en UITextView?

Estoy tratando de cambiar el espacio entre líneas de texto dentro de un objeto UITextView a doble espacio. ¡Pensé que podrías hacerlo a través de Core Text, pero no encontré una solución!

¡Cualquier código de ejemplo o información sería muy apreciada! ¡Gracias!

Respuesta

5

No tiene que buscar en toda la red. Una mirada a la documentación para UITextView es suficiente para determinar que el cambio de espacio entre líneas no es compatible con ese control.

Con Core Text usted tiene control total sobre el diseño del texto que dibuja, por supuesto. Pero sería mucho trabajo reescribir un control similar al UITextView desde cero.

+0

absolutamente, a partir de iOS 4.3 UITextView no lo hace admite cualquier cambio de altura de línea. –

+0

¿cómo puedo cambiar el espaciado entre líneas múltiples? gracias – SAKrisT

+0

@La respuesta de Mark Suman es útil, publique iOS 6. –

4

Esta pregunta se realizó antes de iOS 6. Me gustaría publicar una respuesta actualizada para aquellos que deseen una forma de hacerlo.

Esto se puede hacer ahora con iOS 6 y posterior mediante el uso de NSAttributedString. UITextView ahora acepta una cadena atribuida como una de sus propiedades. Puede realizar todo tipo de manipulación de texto con cadenas atribuidas, incluido el espaciado entre líneas. Puede establecer las alturas de línea mínima y máxima para el atributo de estilo de párrafo de la cadena.

Consulte NSAttributedString Class Reference para obtener más información.

He aquí una muestra de lo que podría hacer:

NSMutableParagraphStyle *paragraph = [[NSMutableParagraphStyle alloc] init]; 
paragraph.minimumLineHeight = 21.0f; 
paragraph.maximumLineHeight = 21.0f; 
NSAttributedString *attributedString = [[NSAttributedString alloc] initWithString:@"Test text line 1\nTest text line 2\nTest text line 3" attributes:@{NSParagraphStyleAttributeName: paragraph}]; 
textView.attributedText = attributedString; 
1

Puede utilizar NSLayoutManagerDelegate. Añadir que a su delegado o ViewController UIView clase (etc.) y luego al crear su UITextView ...

yourTextView.layoutManager.delegate = self 

Añadir este método delegado:

func layoutManager(layoutManager: NSLayoutManager, lineSpacingAfterGlyphAtIndex glyphIndex: Int, withProposedLineFragmentRect rect: CGRect) -> CGFloat { 
    return 5 //Whatever you'd like... 
} 
Cuestiones relacionadas