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

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

有人知道我将如何解决这个问题吗?

非常感谢您的任何建议, JC.

有帮助吗?

解决方案 3

好吧,要激活Uilabel中的文本截断,您应该在设置属性texxt之后将linebreakmode参数重新设置为nsline breakbytruncatingtail。

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

其他提示

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

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

这与希思的建议类似。但是随后都包裹在一个闪亮的包裹中。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top