当有足够的空间时,UILabel 自动换行会在下一行添加额外的单词

Posted

技术标签:

【中文标题】当有足够的空间时,UILabel 自动换行会在下一行添加额外的单词【英文标题】:UILabel word wrapping brings extra word to next line when there is enough space for it 【发布时间】:2018-08-03 01:11:54 【问题描述】:

在某些情况下,UILabel 似乎会在换行时添加一个额外的单词,即使它有足够的空间,例如,

如果再追加一个词,

即使我强制标签的宽度变为如下所示,它仍然会将包含“c”的单词移动到下一行,

我尝试过扭曲 UILabel 的配置,但似乎它的行为相同,除非我将换行模式设置为字符换行,以下是上述情况的配置,

还有约束(在前两种情况下是尾随),

这种特殊行为有什么原因吗?我可以解决这个问题吗?这样一来,空间就空了,这看起来很奇怪。

【问题讨论】:

***.com/questions/48028047/… @agibson007 我明白了,谢谢你的帮助! 我确实找到了一种方法,但目前我仍然不确定它的可靠性(调整文本大小),但布局是 def old UILabel。当我对答案感觉良好时,我会更新这些答案。 找到解决办法了吗? 看来下一行至少应该有两个字。 【参考方案1】:

这是自 ios 11 以来的默认行为,用于修复孤立的单词。没办法关掉

修复它 使用文本作为属性文本

使用 UItextview 并打开滚动、编辑选项

在此处使用自定义标签 Get each line of text in a UILabel

【讨论】:

【参考方案2】:

你应该将换行设置为字符换行,因为空格后面的字母会被识别为一个单词。

【讨论】:

【参考方案3】:

嘿,我知道这已经晚了,但我刚刚发现你可以通过在文本末尾添加一堆空格来欺骗系统。

【讨论】:

【参考方案4】:

如果 UILable 的文本可能会更改,那么仍然可以使用带有“\n”的快速脏破解 - 换行符。

文本“Aaaaaaaaaaaaaa bbb cccccccccc\ndddddd”将强制 UILabel 显示:

Aaaaaaaaaaaaaa bbb cccccccccc
ddddddd

在Interface Builder中可以用Ctrl + Enter

输入新行

【讨论】:

【参考方案5】:

如果你使用 wordWrap,它会尝试保持单词的完整形式,因此,它会转到下一行。如果您使用字符换行,它将中断字符,并将字符推送到下一行。

【讨论】:

以上是关于当有足够的空间时,UILabel 自动换行会在下一行添加额外的单词的主要内容,如果未能解决你的问题,请参考以下文章

ios自动布局标签定位

UILabel 自动换行/字符换行

有没有不使用 sizeToFit 计算 UILabel 大小的准确方法?

在 QLabel 上设置自动换行会破坏窗口的大小限制

无法在具有动态宽度的 Tablecell 中并排自动布局两个 UILabel

UIlabel多行文字自动换行 (自动折行)