我正在iOS上实现一个即时消息应用程序。我发现three20库有一个TTStyledTextLabel,它提供了一些很酷的功能,比如显示图片和url链接。然而,我想将TTStyledTextLabel嵌入到消息气泡中(就像iphone附带的短信应用程序一样),我需要标签根据文本长度调整其大小。我发现TTStyledTextLabel可以根据宽度调整它的高度,但我不知道当文本非常短并且不能填满整行时,如何让它水平收缩。有什么建议吗?
发布于 2011-01-06 20:55:32
我想我有一个稍微好一点的解决方案:我获得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-06 09:16:55
我尝试通过递增地将size中的width参数传递给sizeToFit并查看结果高度来判断大小是否正常,从而尝试这样做。但这并不是一个优雅的解决方案。
对于(int index= 100;index < 320;index= index+30)
{ label.width = x;如果(label.height < 20)中断;
}
https://stackoverflow.com/questions/4573936
复制相似问题