Advertisement
Guest User

Untitled

a guest
Feb 13th, 2016
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.97 KB | None | 0 0
  1. func calculateTextHeight(myString: String, myWidth: CGFloat, myFont: UIFont) -> CGFloat {
  2. let textStorage = NSTextStorage(string: myString)
  3. let textContainer = NSTextContainer.init(size: CGSize(width: myWidth, height: CGFloat.max))
  4. let layoutManager = NSLayoutManager()
  5.  
  6. layoutManager.addTextContainer(textContainer)
  7. textStorage.addLayoutManager(layoutManager)
  8.  
  9. textStorage.addAttribute(NSFontAttributeName, value: myFont, range: NSMakeRange(0, textStorage.length))
  10. textContainer.lineFragmentPadding = 0
  11. textContainer.lineBreakMode = .ByWordWrapping
  12.  
  13. layoutManager.glyphRangeForTextContainer(textContainer)
  14. return layoutManager.usedRectForTextContainer(textContainer).size.height
  15. }
  16.  
  17. var s = "ABCDE 12345"
  18. print(calculateTextHeight(s, myWidth: 500, myFont: UIFont.systemFontOfSize(14)))
  19. // prints 16.7 (correct)
  20.  
  21. s = "ABCDE 12345 💩"
  22. print(calculateTextHeight(s, myWidth: 500, myFont: UIFont.systemFontOfSize(14)))
  23. // prints 22.9 (should be 16.7)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement