如何在Swift中获得UILabel的高度?

use*_*487 10 uilabel swift

我是Swift的初学者,我正试图获得标签的高度.标签有多行文字.我想知道它在屏幕上占据的总高度.

lev*_*ese 13

Swift 4有扩展名

extension UILabel{

public var requiredHeight: CGFloat {
    let label = UILabel(frame: CGRect(x: 0, y: 0, width: frame.width, height: CGFloat.greatestFiniteMagnitude))
    label.numberOfLines = 0
    label.lineBreakMode = NSLineBreakMode.byWordWrapping
    label.font = font
    label.text = text
    label.attributedText = attributedText
    label.sizeToFit()
    return label.frame.height
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 工作正常..,+1 (2认同)

Ahm*_* R. 11

这很简单,只需打电话

label.bounds.size.height
Run Code Online (Sandbox Code Playgroud)


iAj*_*iAj 10

针对Swift 3进行了更新

func estimatedHeightOfLabel(text: String) -> CGFloat {

    let size = CGSize(width: view.frame.width - 16, height: 1000)

    let options = NSStringDrawingOptions.usesFontLeading.union(.usesLineFragmentOrigin)

    let attributes = [NSFontAttributeName: UIFont.systemFont(ofSize: 10)]

    let rectangleHeight = String(text).boundingRect(with: size, options: options, attributes: attributes, context: nil).height

    return rectangleHeight
}

override func viewDidLoad() {
    super.viewDidLoad()

    guard let labelText = label1.text else { return }
    let height = estimatedHeightOfLabel(text: labelText)
    print(height)
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述