Para cualquier otra persona tienen el mismo tema, que terminó en marcha su solución mediante el uso de un UITextView
en lugar de un UILabel
. Esta era la mejor solución por dos razones:
que no requiere ningún comportamiento personalizado para determinar si el texto contiene espacios y cambiar el modo de salto de línea de la UILabel
a/desde el ajuste de línea/personaje.
Lo que es más importante, hay un borde donde puede tener palabras normales (que desea envolver en los límites de las palabras) más texto extralargo (que debe ajustar los límites del carácter). A menos que escriba algún tipo de lógica para insertar un espacio en ese texto extra largo (en la posición correcta) para forzar un "ajuste de palabras falsas", no veo ninguna manera de manejar el ajuste de palabras y caracteres, dependiendo de la situación, dentro de uno UILabel
. El UITextView
maneja esta situación automáticamente, rompiendo límites de palabras o límites de caracteres según sea necesario.
Para detalles sobre cómo lo estoy haciendo esto, no tengo una sola línea UITextView
con la edición y el desplazamiento deshabilitado. También configuré el .contentInset
para quitar el relleno haciendo que se vea (para el ojo desprevenido) como un UILabel
. A continuación, utilizo el método sizeWithFont:constrainedToSize:lineBreakMode:
para determinar el marco del texto renderizado y ajustar el marco del UITextView
en consecuencia para que se ajuste exactamente al texto.
Espero que esto ayude!
Nota para futuros lectores (como yo): probando con iOS 7 y SDK 8, UILineBreakModeWordWrap parece funcionar de la manera en que uno esperaría ahora.Es decir, se rompe por palabra cuando es posible, pero por carácter si es necesario. Esto si para un UILabel. – eselk