【问题标题】:How to adjust width of TTStyledTextLabel?如何调整 TTStyledTextLabel 的宽度?
【发布时间】:2011-01-01 11:42:00
【问题描述】:

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

【问题讨论】:

  • 出于兴趣,请问您实际使用的 IM 功能是什么? libpurple?

标签: iphone three20 ttstyledtextlabel


【解决方案1】:

我认为我有一个更好的解决方案:我获取 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);

【讨论】:

  • [label sizeToFit] 的行为是什么;在这种情况下?它是否在屏幕宽度上布置了所有内容?
【解决方案2】:

我尝试通过将 size 中的 width 参数递增地传递给 sizeToFit 并查看生成的高度来给出尺寸是否合适的提示。但这不是一个优雅的解决方案

for (int index = 100; index

{ 标签.宽度 = x; 如果(标签。高度

}

【讨论】:

  • 我想我有一个更好的解决方案:我获取 ttstyledtext 的 rootFrame 并遍历其兄弟帧以找到最大宽度。
猜你喜欢
  • 1970-01-01
  • 2017-02-18
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 2010-11-27
  • 2014-04-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多