ios - El método UILabel sizeToFit no funciona correctamente



objective-c uiscrollview (5)

Estoy tratando de mostrar un largo trozo de texto dentro de una UILabel en una línea. La UILabel es una subvista de UIScrollView, por lo que puedo desplazarme y ver la UILabel completa.

Mi problema es que el método sizeToFit solo funciona parcialmente.

textLabel.attributedText = attributedString;
textLabel.numberOfLines = 1;
[textLabel sizeToFit];
textScrollView.contentSize = CGSizeMake(textLabel.frame.size.width, textLabel.frame.size.height);

El tamaño del contenido de UIScrollView es lo suficientemente grande como para mostrar todo el UILable, pero para una línea como:

así que intentaré compartir algunos de ellos aquí de vez en cuando ".

La UILabel muestra:

así que trataré de compartir algo ...

¿Qué estoy haciendo mal?

https://src-bin.com



Answer #2

La razón más común por la que sizeToFit no funciona correctamente es que UILabel no tiene ninguna restricción de reproducción automática, por ejemplo, si está confiando implícitamente en que la posición de la vista permanezca fija con respecto a la parte superior izquierda. La adición de cualquier restricción (inicial, superior, central Y, lo que sea) lo solucionará, probablemente porque dará lugar a que se layoutSubviews de layoutSubviews en algún momento, como se sugiere en la respuesta de Maxthon Chan.


Answer #3

Si quieres lograr esto con el diseño automático activado, es simple. Sólo asegúrese de agregar numberOfLines

textLabel.adjustsFontSizeToFitWidth = YES;
textLabel.numberOfLines = 0;

Answer #4

Sorprendentemente, si no pusiera una restricción en el ancho de la etiqueta, esto funcionaría:

[textLabel.superview layoutSubviews];

Aprendí esto por ensayo y error.


Answer #5

tratar

textLabel.adjustsFontSizeToFitWidth  = YES;
textLabel.minimumFontScale      =  0.5;  




sizetofit