多行和多行文本的字符截断类型样式
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种截断的区别