2011-04-29 10 views
5

De qué factores depende el ajuste del texto dentro de una vista de texto. El ancho de mi vista de texto es de 160 px y calculé el ancho del texto entrante usando el código mencionado a continuación y resulta ser 157 px, pero este texto está envuelto en 3 líneas ... ¿Por qué?Encontrar el ancho correcto de un NSString

CGSize size = [myText sizeWithFont:textViewFont 
      constrainedToSize:textView.frame.size 
      lineBreakMode:UILineBreakModeWordWrap]; 

CGFloat textWidth = size.width; 

Pensé en dividir el ancho del texto con el ancho de la vista de texto para obtener el número de líneas. Pero el cálculo me devuelve 1, mientras que puedo ver 3 líneas en textview en el simulador.

Respuesta

10
- (CGSize)sizeWithFont:(UIFont *)font 
    constrainedToSize:(CGSize)size 
     lineBreakMode:(UILineBreakMode)lineBreakMode 

calcula el tamaño de una cadena si sería dibujado limitada por el tamaño dado como argumento, si la cadena es demasiado larga para la restricción de tamaño dado que conseguirá truncado para caber.

para obtener el ancho de la cadena si se dibuja en una sola línea sin restricciones utilizar:

- (CGSize)sizeWithFont:(UIFont *)font 

véase: http://developer.apple.com/library/ios/#documentation/uikit/reference/NSString_UIKit_Additions/Reference/Reference.html

NOTA: A partir del iOS7

- (CGSize)sizeWithFont:(UIFont *)font 

se obsoleto, en su lugar use:

- (CGSize)sizeWithAttributes:(NSDictionary *)attrs 
+0

El problema es que la cadena aún no está dibujada en la pantalla. Estoy obteniendo estos datos del servidor y para algunas funcionalidades tengo que calcular cuántas líneas encajarán en un área de texto determinada. ¿Alguna solución alrededor de eso? – Abhinav

+0

No he comprobado esto por mí mismo, pero la respuesta de Jano a esta pregunta http://stackoverflow.com/questions/5837348/counting-the-number-of-lines-in-a-textview-lines-wrapped-by- el tamaño del fotograma parece razonable – monowerker

1

Intenta configurar el height del tamaño que pasas a ese método para que sea algo enorme. De lo contrario, el tamaño devuelto siempre mostrará la altura real de la vista de texto (suponiendo que la cadena completa no cabe en la altura determinada).

+2

(uso FLT_MAX) – nielsbot

Cuestiones relacionadas