UILable“中文”加上“英文或者其他非中文字符”自动换行的问题

时间:2022-08-16 07:45:07

最近突然遇到了个很纠结的问题,测试的时候给label 复制“中文”+“英文字符”总长度满足换行,设置numberOfLines为0。 问题出现了,总是在中文后自动换行,经过多方查询,发现label的lineBreakMode属性默认是NSLineBreakByWordWrapping,该属性作用是以空格为边界保留单词。系统默认吧中文后边的所有英文当做了一个单词来保留,英文太长一行显示不下所以系统就会自动换行。其实很多编辑器也是如此。
以下是lineBreakMode的各种类型:
NSLineBreakByWordWrapping = 0 //以空格为边界,保留单词。
NSLineBreakByCharWrapping //保留整个字符
NSLineBreakByClipping //简单剪裁,到边界为止
NSLineBreakByTruncatingHead //前面部分文字以……方式省略,显示尾部文字内容
NSLineBreakByTruncatingTail //结尾部分的内容以……方式省略,显示头的文字内容。
NSLineBreakByTruncatingMiddle //中间的内容以……方式省略,显示头尾的文字内容。

所以要想不让他自动换行就把属性设置成保留整个字符即:NSLineBreakByCharWrapping