带有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 = 1
和 lineBreakMode = .ByTruncatingTail
。将它们放在视图中,一个在另一个之上。
【讨论】:
问题明确指出一个标签而不是两个标签。【参考方案2】:首先需要将行数设置为0(无限行);
textLabel.numberOfLines = 0;
接下来,您可以通过以下方式在任何地方中断:
textLabel.text = "str1 \n str2"
【讨论】:
问题不在于换行符,而在于截断。这无济于事。以上是关于带有2行的UILabel,如何独立截断每一行?的主要内容,如果未能解决你的问题,请参考以下文章
带有多个链接的 NSAttributedString 的 UILabel,带有行限制,显示尾部截断,带有未见文本的 NSBackgroundColorAttributeName