Skip to content

Instantly share code, notes, and snippets.

@a7mdDev
Created July 23, 2020 01:09
Show Gist options
  • Save a7mdDev/1a9ec04d6c7976c30df0b7987c8a6a60 to your computer and use it in GitHub Desktop.
Save a7mdDev/1a9ec04d6c7976c30df0b7987c8a6a60 to your computer and use it in GitHub Desktop.

Revisions

  1. a7mdAli created this gist Jul 23, 2020.
    18 changes: 18 additions & 0 deletions TruncationCheck.swift
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,18 @@
    import UIKit

    func willTruncate(text: String, font: UIFont, lineSpacing: CGFloat, maxNumberOfLines: Int, availableWidth: CGFloat) -> Bool {
    let paragraph = NSMutableParagraphStyle()
    paragraph.lineSpacing = lineSpacing
    let sizeThatFits = text.boundingRect(with: CGSize(width: availableWidth, height: .greatestFiniteMagnitude),
    options: .usesLineFragmentOrigin,
    attributes: [.font: font, .paragraphStyle: paragraph],
    context: nil)

    let height = sizeThatFits.height
    let numberOfLines = Int(round(height / (font.lineHeight + lineSpacing)))
    return numberOfLines > maxNumberOfLines
    }

    let str = "Hello, world!"
    willTruncate(text: str, font: .systemFont(ofSize: 12), lineSpacing: 5, maxNumberOfLines: 1, availableWidth: 100) // false
    willTruncate(text: str+str, font: .systemFont(ofSize: 12), lineSpacing: 5, maxNumberOfLines: 1, availableWidth: 100) // true