Как настроить ширину TTStyledTextLabel? - PullRequest
2 голосов
/ 01 января 2011

Я внедряю приложение для обмена мгновенными сообщениями на iOS. Я обнаружил, что в библиотеке Three20 есть TTStyledTextLabel, которая предоставляет интересные функции, такие как показ изображений и URL-ссылок. Однако я хочу встроить TTStyledTextLabel в пузырь сообщений (как это делает приложение sms, поставляемое с iphone), где мне нужна метка, чтобы отрегулировать ее размер в соответствии с длиной текста. Я обнаружил, что TTStyledTextLabel может регулировать его высоту в соответствии с шириной, но я не знаю, как уменьшить его по горизонтали, когда текст очень короткий и не может заполнить всю строку. Какие-либо предложения?

Ответы [ 2 ]

3 голосов
/ 06 января 2011

Я думаю, что у меня есть немного лучшее решение: я получаю rootFrame из ttstyledtext и перебираю его родственные кадры, чтобы найти максимальную ширину.

Работает так:

    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);
0 голосов
/ 06 января 2011

Я попытался сделать это, постепенно передавая параметр width в size для sizeToFit и просматривая итоговую высоту, чтобы получить подсказки с точки зрения того, что размер в порядке.Но это не элегантное решение

для (int index = 100; index <320; index = index + 30) </p>

{label.width = x;if (label.height <20) перерыв; </p>

}

...