微信朋友圈文字过长收缩功能

2018-08-10  本文已影响0人  凨弥

需求

经常看到朋友圈中,文字过长,会显示 全文收缩 功能。
如何判断UIlable的长度

实现

直接上代码 命名可能不是那么规范....

extension UILabel{
    
    ///a实际行数是否大于lines行数 vspacing 行间距
    func getLinesLargerNumber(_ lines:Int, _ spacing:CGFloat) -> Bool {
        let linesOld = numberOfLines
        
        numberOfLines = 0
        let labelHeight = sizeThatFits(CGSize(width: bounds.width, height: CGFloat(MAXFLOAT))).height
        let lineHeight = font.lineHeight
        numberOfLines = linesOld
        return labelHeight > (CGFloat(lines) * lineHeight + (CGFloat(lines) - 1)*spacing)
    }
    
    func textStr(str:String,str1:Int,str2:Int,dict:[NSAttributedString.Key : Any],dict1:[NSAttributedString.Key : Any],spacing:CGFloat = 6) {
        let staArt = NSMutableAttributedString(string:str)

        staArt.addAttributes(dict, range: NSRange(location: 0, length: str1))
        staArt.addAttributes(dict1, range: NSRange(location: str1, length: staArt.string.count - str1))
        
        let style = NSMutableParagraphStyle()
        style.alignment = .left
        style.lineSpacing = spacing
        style.lineBreakMode = .byTruncatingTail
        staArt.addAttribute(.paragraphStyle, value: style, range: NSRange(location: 0, length: staArt.string.count))
        
        attributedText = staArt
    }
   
}
上一篇 下一篇

猜你喜欢

热点阅读