Pregunta

Me estoy poniendo en práctica una aplicación de mensajería instantánea en iOS. Me encontré con que Three20 biblioteca tiene una TTStyledTextLabel que proporciona características interesantes como muestran las imágenes y enlaces URL. Sin embargo, quiero incrustar el TTStyledTextLabel en una burbuja de mensaje (al igual que la aplicación SMS se envía con iPhone lo hace), donde necesito la etiqueta para ajustar su tamaño de acuerdo a la longitud del texto. He descubierto que TTStyledTextLabel puede ajustar su altura en función de su anchura, pero no sé cómo hacer que reducir en sentido horizontal cuando el texto es muy corto y no puede llenar toda una línea. ¿Alguna sugerencia?

¿Fue útil?

Solución

Creo que tengo un poco mejor solución: Tengo la rootFrame del ttstyledtext y iterar sobre sus marcos de hermanos para encontrar el ancho máximo

.

Funciona de esta manera:

    TTStyledTextLabel* label = [[TTStyledTextLabel alloc] init];
    label.text = [TTStyledText textFromXHTML:myTextToBeDisplayed];
    [label sizeToFit];
    CGFloat maxWidth = 0;
    TTStyledFrame *f = label.text.rootFrame;
    while (f) {
        int w = f.x + f.width;
        if (w > maxWidth) {
            maxWidth = w;
        }
        f = f.nextFrame;
    }
    return CGSizeMake(maxWidth, label.height);

Otros consejos

I intentado hacer que al pasar de forma incremental el parámetro de anchura en tamaño a sizeToFit y mirando a la altura resultante para dar señales en términos de si el tamaño es aceptable. Pero esto no es una solución elegante

for (int index = 100; index <320; index = index + 30)

{ label.width = x; si (label.height <20) romper;

}

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top