首先来说一说ios中的 lineBreakModelineBreakMode
: 设置文字过长时的显示截断样式
可选值如下
byWordWrapping
: 以单词为单位换行,以单词为单位截断。byCharWrapping
:以字符为单位换行,以字符为单位截断。byClipping
: 以单词为单位换行,以字符为单位截断。byTruncatingHead
: 以单词为单位换行, 如果是单行,则开始部分有省略号。如果是多行,则中间有省略号。byTruncatingTail
: 以单词为单位换行, 无论是单行还是多行,都是末尾有省略号。byTruncatingMiddle
: 以单词为单位换行, 无论是单行还是多行,都是中间有省略号。
三种省略方式如下
byTruncatingHead为头部截断,但是文字为多行时省略的是中间内容而不是头部内容,下面我们就来实现多行文字,文字超过设定行数后省略头部的功能
首先根据容器的宽度和字体的大小计将文本分割成多行
func splitTextIntoLines(text: String, width: CGFloat, font: UIFont) -> [String] {
let textBox = CGSize(width: width, height: