如何调整TTStyledTextLabel的宽度?

时间:2011-01-01 11:42:01

标签: iphone three20 ttstyledtextlabel

我正在iOS上实现一个IM应用程序。我发现three20库有一个TTStyledTextLabel,它提供了很酷的功能,比如显示图像和url链接。但是我想将TTStyledTextLabel嵌入到消息气泡中(就像iphone随附的短信应用程序一样),我需要标签根据文本长度调整其大小。我发现TTStyledTextLabel可以根据它的宽度调整它的高度,但我不知道当文本非常短并且不能填满整行时如何使它水平缩小。有什么建议?

2 个答案:

答案 0 :(得分:3)

我认为我有一个更好的解决方案:我得到ttstyledtext的rootFrame并迭代它的兄弟帧以找到最大宽度。

它的工作原理如下:

    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);

答案 1 :(得分:0)

我尝试通过逐步将width参数的大小传递给sizeToFit并查看结果高度以根据大小是否正确来提供提示。但这不是一个优雅的解决方案

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

{   label.width = x;   if(label.height< 20)       打破;

}