Come regolare la larghezza di TTStyledTextLabel?
-
14-10-2019 - |
Domanda
sto implementando un app IM su iOS. Ho scoperto che Three20 biblioteca ha un TTStyledTextLabel che fornisce funzioni interessanti come mostrando immagini e collegamenti URL. Tuttavia voglio incorporare il TTStyledTextLabel in una bolla messaggio (proprio come l'applicazione sms fornito con iPhone lo fa), dove ho bisogno l'etichetta per regolarne le dimensioni in base alla lunghezza del testo. Ho trovato che TTStyledTextLabel può regolare l'altezza secondo la sua larghezza, ma non so come farlo ridurre in orizzontale quando il testo è molto breve e non può riempire una intera linea. Eventuali suggerimenti?
Soluzione
Credo di avere una soluzione un po 'meglio: ho la rootFrame del ttstyledtext e iterare sulle sue strutture di pari livello per trovare la larghezza massima
.Funziona in questo modo:
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);
Altri suggerimenti
Ho provato a farlo a modo incrementale passando il parametro di larghezza per dimensioni a sizeToFit e guardando l'altezza risultante per dare spunti in termini di se la dimensione è ok. Ma questa non è una soluzione elegante
for (int index = 100; indice <320; index = index + 30)
{ label.width = x; if (label.height <20) break;
}