Ios4 NSAttributedString:包装+;截断

Ios4 NSAttributedString:包装+;截断,ios4,core-text,nsattributedstring,Ios4,Core Text,Nsattributedstring,我有一个在UITableViewCell中绘制多色文本的视图。为了绘制多色文本,我正在使用NSAttributedString,但是,我希望这样做,如果文本太长而无法放入视图,最后一条可见的行将被截断,以便在其末端显示省略号 显然,当只绘制一条直线时,这很容易做到,因为您可以设置 段落样式的换行模式的KCTLineBreakByTruncingTail。问题是,我希望文本换行以填充矩形,然后仅用省略号截断最后一行-设置换行模式将整个文本限制为一行 有人知道我会怎么做吗 非常感谢您的建议, JC.

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

显然,当只绘制一条直线时,这很容易做到,因为您可以设置 段落样式的换行模式的KCTLineBreakByTruncingTail。问题是,我希望文本换行以填充矩形,然后仅用省略号截断最后一行-设置换行模式将整个文本限制为一行

有人知道我会怎么做吗

非常感谢您的建议,
JC.

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

您可以在此处找到工作代码:


这与希思建议的方法相似。但是,所有这些都封装在一个闪亮的包中。

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

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

你有没有想过?