iOS lineBreakMode详解

多行和多行文本的字符截断类型样式

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"
}
  1. byWordWrapping : 以单词为单位换行,以单词为单位截断。
  2. byCharWrapping :以字符为单位换行,以字符为单位截断。
  3. byClipping : 以单词为单位换行,以字符为单位截断。
  4. byTruncatingHead : 以单词为单位换行, 如果是单行,则开始部分有省略号。如果是多行,则中间有省略号。
  5. byTruncatingTail : 以单词为单位换行, 无论是单行还是多行,都是末尾有省略号。
  6. byTruncatingMiddle : 以单词为单位换行, 无论是单行还是多行,都是中间有省略号。

踩坑记:设置LineBreakMode不生效,导致前三种截断结果一样

解决方法:设置文本为多行。

label.numberOfLines = 0  //设置多行文本

看看设置多行文本前后的对比效果
未换行前三种截断没有生效
添加换行后,截断效果生效

不换行

添加换行

最后我们看看六种截断样式的区别

  1. 中文截断样式,因为中文字符的特殊性,中文字符是一个整体,所以截断样式不太明显,
    中文截断
  2. 英文样式 就很直观的显示6种截断的区别
    英文截断
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容