多行和多行文本的字符截断类型样式
lineBreakMode : 设置文字过长时的显示截断样式
先看看系统LineBreakMode的有多少种?
public enum NSLineBreakMode : Int {
case byWordWrapping = 0 // Wrap at word boundaries, default
case byCharWrapping = 1 // Wrap at character boundaries
case byClipping = 2 // Simply clip
case byTruncatingHead = 3 // Truncate at head of line: "...wxyz"
case byTruncatingTail = 4 // Truncate at tail of line: "abcd..."
case byTruncatingMiddle = 5 // Truncate middle of line: "ab...yz"
}
-
byWordWrapping: 以单词为单位换行,以单词为单位截断。 -
byCharWrapping:以字符为单位换行,以字符为单位截断。 -
byClipping: 以单词为单位换行,以字符为单位截断。 -
byTruncatingHead: 以单词为单位换行, 如果是单行,则开始部分有省略号。如果是多行,则中间有省略号。 -
byTruncatingTail: 以单词为单位换行, 无论是单行还是多行,都是末尾有省略号。 -
byTruncatingMiddle: 以单词为单位换行, 无论是单行还是多行,都是中间有省略号。
踩坑记:设置LineBreakMode不生效,导致前三种截断结果一样
解决方法:设置文本为多行。
label.numberOfLines = 0 //设置多行文本
看看设置多行文本前后的对比效果
未换行前三种截断没有生效
添加换行后,截断效果生效

不换行

添加换行
最后我们看看六种截断样式的区别
-
中文截断样式,因为中文字符的特殊性,中文字符是一个整体,所以截断样式不太明显,
中文截断 -
英文样式就很直观的显示6种截断的区别
英文截断

