我正在使用下面的UILabel扩展方法来计算UILabel中的实际行数。但是,我看到它总是返回比实际行数更多的值。而且,它返回的多余行数总是不一样的。因此,在使用该值之前,无法用固定的常数减去它。任何关于这里出问题的想法。我已经看过堆栈溢出中发布的解决方案,但它们也无济于事。
extension UILabel {
var maxNumberOfLines: Int {
guard let text = text, let font = font else {
return 0
}
let charSize = font.lineHeight
let textSize = (text as NSString).boundingRect(
with: CGSize(width: frame.width, height: .greatestFiniteMagnitude),
options: .usesLineFragmentOrigin,
attributes: [.font: font],
context: nil)
let linesRoundedUp = Int(ceil(textSize.height/charSize))
return linesRoundedUp
}
}