带有2行的UILabel,如何独立截断每一行?

Posted

技术标签:

【中文标题】带有2行的UILabel,如何独立截断每一行?【英文标题】:UILabel with 2 lines, how to truncate each line independently? 【发布时间】:2014-05-12 13:02:37 【问题描述】:

我正在尝试用 2 行显示一个 UILabel,如下所示:

"Here is the first line (a long one) and that's it"
"And this is the second line with random number of chars"

使用 Truncate Tail 它会显示:

"Here is the first line (a long one) and that's ..."

我的目标是展示:

"Here is the first line (a long .."
"And this is the second line wit.."

有没有办法将UILabel 设置为 2 行而不使用 2 UILabel's

【问题讨论】:

文本中有换行符吗?如果是这样,您可以计算给定控件设置的文本长度并单独截断行。否则我不明白你想要实现什么。 令人惊讶的是,我做到了,而且效果很好。但是当屏幕旋转到横向时,我希望每一行都“扩展”,这就是我问这个的原因。有什么想法吗? 好点,每次更改绘图区域或文本时都需要重新计算。可以通过继承UILabel 并覆盖setText:layoutSubviews 来完成,尽管前者可能无法涵盖所有​​文本设置器,而后者可能不是更改文本的最佳方法,请注意创建无限递归. 我们可以这样实现吗? [yourLabel setNumberOfLines:0]; 我认为@A-Live 是对的。如果你setNumberOfLines:0,那么它可能会扩大UILabel的高度。也许 2 UILabel's 是以“优雅”的方式做到这一点的唯一方法。 【参考方案1】:

拆分\n 上的字符串以创建两个字符串。然后创建 2 个 UILabel 设置为 numberOfLines = 1lineBreakMode = .ByTruncatingTail。将它们放在视图中,一个在另一个之上。

【讨论】:

问题明确指出一个标签而不是两个标签。【参考方案2】:

首先需要将行数设置为0(无限行);

textLabel.numberOfLines = 0;

接下来,您可以通过以下方式在任何地方中断:

textLabel.text = "str1 \n str2"

【讨论】:

问题不在于换行符,而在于截断。这无济于事。

以上是关于带有2行的UILabel,如何独立截断每一行?的主要内容,如果未能解决你的问题,请参考以下文章

如何检查 UILabel 是不是被截断?

带有多个链接的 NSAttributedString 的 UILabel,带有行限制,显示尾部截断,带有未见文本的 NSBackgroundColorAttributeName

UILabel 文本截断与文本中的换行符

UITableViewCell 中的 UILabel - 截断信息

如何找出截断的 UILabel 文本的宽度

UILabel 和 UIButton - 截断标签而不是按钮