Skip to content

Instantly share code, notes, and snippets.

@alemar11
Forked from plumhead/StringSize.swift
Last active September 18, 2015 19:41
Show Gist options
  • Save alemar11/1850ec205008cee01c36 to your computer and use it in GitHub Desktop.
Save alemar11/1850ec205008cee01c36 to your computer and use it in GitHub Desktop.
String extension to find the layout size of a String with specified attributes.
extension String {
func size(withAttributes attrs: [String:AnyObject], constrainedTo box: NSSize) -> NSRect {
let storage = NSTextStorage(string: self)
let container = NSTextContainer(containerSize: NSSize(width: box.width, height: box.height))
let layout = NSLayoutManager()
layout.addTextContainer(container)
storage.addLayoutManager(layout)
storage.addAttributes(attrs, range: NSMakeRange(0, storage.length))
container.lineFragmentPadding = 0.0
let _ = layout.glyphRangeForTextContainer(container)
return layout.usedRectForTextContainer(container)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment