当有足够的空间时,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 自动换行会在下一行添加额外的单词的主要内容,如果未能解决你的问题,请参考以下文章
有没有不使用 sizeToFit 计算 UILabel 大小的准确方法?