Tengo un UILabel de líneas múltiples cuyo tamaño de fuente me gustaría ajustar dependiendo de la longitud del texto. El texto completo debe caber en el marco de la etiqueta sin truncarlo.UILabel multilínea con ajustesFontSizeToFitWidth
Desafortunadamente, de acuerdo con la documentación, la propiedad adjustsFontSizeToFitWidth
"es efectiva solo cuando la propiedad numberOfLines
está configurada en 1".
I tratado de determinar el tamaño de fuente ajustado utilizando
-[NSString (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size lineBreakMode:(UILineBreakMode)lineBreakMode]
y luego disminuyendo el tamaño de la fuente hasta que se ajuste. Desafortunadamente, este método trunca internamente el texto para que se ajuste al tamaño especificado y devuelve el tamaño de la cadena truncada resultante.
que he encontrado más exacto utilizar '[componentsSeparatedByCharactersInSet auto: [NSCharacterSet whitespaceAndNewlineCharacterSet]] en lugar de' simplemente dividiendo por el espacio. – Jilouc
Jilouc, gracias, buen consejo. He actualizado el código. –
Esto es genial. Agregué soporte para el tamaño mínimo de fuente y una categoría en 'UILabel' por conveniencia y [lo cargué como una esencia] (https://gist.github.com/2766074) para cualquiera que esté interesado. – kevboh