美文网首页
UILabel多行文本高度计算

UILabel多行文本高度计算

作者: LJCoder | 来源:发表于2018-09-14 18:18 被阅读11次

    多行文本高度的计算在开发过程中经常会用到,一般都是使用boundingRect(with:options:attributes:)方法来计算高度。

    // 根据字体计算size
    func size(drawIn size: CGSize, font: UIFont, options: NSStringDrawingOptions = .usesLineFragmentOrigin, lineBreak: NSLineBreakMode = .byCharWrapping) -> CGSize {
        let paragraph = NSMutableParagraphStyle()
        paragraph.lineBreakMode = lineBreak
        let dic = [NSAttributedStringKey.font: font, NSAttributedStringKey.paragraphStyle: paragraph]
        let bounds = NSAttributedString(string: self, attributes: dic).boundingRect(with: size, options: options, context: nil)
        return bounds.size
    }
    

    size: label的size,如果想要高度自适应,就传CGFloat(MAXFLOAT),宽度为label的宽度
    lineBreak:这个要和label的lineBreakModel一样,计算才会准确

    在使用的时候,会发现在计算中英混合字符串的时候会不准确。这个是label的lineBreakModel失效引起的,只需要在赋值后再设置一次lineBreakModel属性就可以了。

    label.attributedText = NSAttributedString(string: "备注: \(notes)", attributes: nil)
    label.lineBreakMode = .byCharWrapping
    

    相关文章

      网友评论

          本文标题:UILabel多行文本高度计算

          本文链接:https://www.haomeiwen.com/subject/reqagftx.html