我正在 iOS 上实现一个 IM 应用程序。我发现 three20 库有一个 TTStyledTextLabel,它提供了很酷的功能,比如显示图像和 url 链接。但是我想将 TTStyledTextLabel 嵌入到消息气泡中(就像 iphone 附带的短信应用程序一样),我需要标签根据文本长度调整其大小。我发现TTStyledTextLabel可以根据它的宽度调整它的高度,但是我不知道当文本很短并且不能填满一整行时如何让它水平收缩。有什么建议么?
问问题
1558 次
2 回答
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);
于 2011-01-06T12:55:31.797 回答
0
我尝试通过将 size 中的宽度参数递增地传递给 sizeToFit 并查看生成的高度来给出尺寸是否合适的提示。但这不是一个优雅的解决方案
for (int index = 100; index < 320; index= index+30)
{ 标签.宽度 = x; if (label.height < 20) 中断;
}
于 2011-01-06T01:16:55.180 回答