iOS根据字符串准确计算UITextView高度

时间:2018-02-28 07:56:58

标签: ios uitextview

我尝试根据它来计算UITextView自适应字符串的高度。

    let textView = UITextView()
    textView.frame = CGRect(x: 0, y: 0, width: width - 2 * margin, height: CGFloat.greatestFiniteMagnitude)
    textView.font = WDFontManager.regularFont(withSize: 14)
    textView.attributedText = NSAttributedString(string: content, attributes: contentAttributes)
    textView.textContainer.widthTracksTextView = false
    textView.textContainer.lineFragmentPadding = 0
    textView.textContainerInset = UIEdgeInsets.zero
    textView.textContainer.exclusionPaths = [UIBezierPath(rect: CGRect(x: 0, y: 0, width: 60, height: 60))]
    //Method 1
    textView.layoutManager.ensureLayout(for: textView.textContainer)
    let rect = textView.layoutManager.usedRect(for: textView.textContainer)
    let textHeight = ceil(rect.height)
    //Method 2
    let newSize = textView.sizeThatFits(CGSize.init(width: width - 2 * margin, height: CGFloat(MAXFLOAT)))
    let hightSize = ceil(newSize.height)

在正常情况下没有问题。

但是包含电子邮件表情符号和特殊字符(例如:#),此方法将被计算错误。

我想问一下是否有更准确的方法来解决这个问题。

0 个答案:

没有答案