Skip to content

Instantly share code, notes, and snippets.

@fuxingloh
Last active June 4, 2024 08:09
Show Gist options
  • Save fuxingloh/ccf26bb68f4b8e6cfd02 to your computer and use it in GitHub Desktop.
Save fuxingloh/ccf26bb68f4b8e6cfd02 to your computer and use it in GitHub Desktop.
iOS Swift: How to check if UILabel is truncated? Calculate number of lines for UILabel
func countLabelLines(label: UILabel) -> Int {
// Call self.layoutIfNeeded() if your view uses auto layout
let myText = label.text! as NSString
let rect = CGSize(width: label.bounds.width, height: CGFloat.greatestFiniteMagnitude)
let labelSize = myText.boundingRect(with: rect, options: .usesLineFragmentOrigin, attributes: [NSAttributedStringKey.font: label.font], context: nil)
return Int(ceil(CGFloat(labelSize.height) / label.font.lineHeight))
}
@stefanprojchev
Copy link

stefanprojchev commented Jun 4, 2024

In order to work you must call it after func viewDidLayoutSubviews() was called.
It uses the label frame. In viewDidLoad this value is still not correct which leads to you getting incorrect values.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment