2011-02-18 19 views
14

enter image description hereCómo llegar altura de una línea en UITextView

Como se muestra en el diagrama anterior ... la lineHeight es la altura de la caja de color naranja. ¿Cómo puedo obtener la altura de la caja azul (es decir, lineHeight + altura del espacio entre líneas)? ¡Gracias!

ACTUALIZACIÓN: Encontré que el lineHeight se comporta de manera diferente depende de los caracteres en el contenido. Si el contenido está todo en inglés, el lineHeight es corrent (21, por ejemplo, en el UITextView predeterminado). Sin embargo, cuando el contenido se mezcla con caracteres chinos, la UIFont lineHeight todavía se registra como 21 mientras que el self.textView.contentSize.height se incrementa de manera diferente:

English - adding 21 points for each line 
Chinese - adding 24 points for each line 

ACTUALIZACIÓN (sizeWithFont:)

CGSize constrainedRect = CGSizeMake(1000, 1000); 
CGSize rectEnglish = [@"hello\nworld" sizeWithFont:self.textView.font constrainedToSize:constrainedRect lineBreakMode:UILineBreakModeWordWrap]; 
NSLog(@"width: %.2f height: %.2f", rectEnglish.width, rectEnglish.height); 
CGSize rectChinese = [@"你\n好嗎" sizeWithFont:self.textView.font constrainedToSize:constrainedRect lineBreakMode:UILineBreakModeWordWrap]; 
NSLog(@"width: %.2f height: %.2f", rectChinese.width, rectChinese.height); 

de salida:

width: 41.00 height: 42.00 
width: 34.00 height: 42.00 

Respuesta

12

Tienes que usar

yourTextView.font.lineHeight 
+1

Tenga en cuenta que 'UIFont.lineHeight' es iOS4.0 + solamente. –

+1

que es una propiedad de solo lectura – Puran

+0

trabajo para mí !!!! – slboat

0

Intente utilizar el NSStringUIKit additions. Alguna variación de -sizeWithFont: debería ser lo que necesita.

+0

Me parece que '-sizeWithFont' también ignora el problema del lenguaje (vea ACTUALIZACIÓN sobre' -sizeWithFont' en cuestión) – ohho

+0

¿No puede simplemente usar el texto que se dibujará? –

Cuestiones relacionadas