NSAttributedString:包装+截断

时间:2010-11-07 10:20:38

标签: ios4 core-text nsattributedstring

我有一个在UITableViewCell中绘制多色文本的视图。要绘制多色文本我正在使用NSAttributedString但是,我想这样做,如果文本太长而无法放入视图中,最后一条可见行将被截断以在其末尾显示省略号。

显然,只绘制一行就很容易,只需设置即可 kCTLineBreakByTruncatingTail用于段落样式的换行模式。问题是我希望我的文本换行以填充矩形,然后只有最后一行用省略号截断 - 设置换行模式将整个文本限制为一行。

有没有人对我如何做到这一点有任何想法?

非常感谢任何建议, JC。

3 个答案:

答案 0 :(得分:0)

使用UITableViewCell的矩形从CTFrameSetter创建CTFrame。然后,您可以获取CTFrame的所有CTLine并确定它们何时会被切断。要交换省略号,您可以使用单独的CTFrame保持绘制,并将其绘制在最后一行的溢出文本上​​。

答案 1 :(得分:0)

您可以在此处找到工作代码:https://stackoverflow.com/a/14612598/473067

这与希思建议的方法类似。但随后所有这些都包裹在一个闪亮的包装中。

答案 2 :(得分:0)

好吧,要在UILabel中激活文本截断,您应该在设置attributedText后将lineBreakMode参数重新设置为NSLineBreakByTruncatingTail。

 textLabel.attributedText = attributedText;
 textLabel.lineBreakMode = NSLineBreakByTruncatingTail;