特定の幅の領域に自動折り返しONでテキストを表示する時に、
全体を表示するのに必要な高さを計算する方法。
CATextLayerの必要サイズを求める時などに使ったのでメモ。
func heightForStringDrawing(myString: String, myFont: NSFont, myWidth: CGFloat) -> CGFloat
{
var textStorage = NSTextStorage(string: myString)
var textContainer = NSTextContainer(containerSize: NSMakeSize(myWidth, CGFloat(FLT_MAX)))
var layoutManager = NSLayoutManager()
layoutManager.addTextContainer(textContainer)
textStorage.addLayoutManager(layoutManager)
textStorage.addAttribute(NSFontAttributeName, value:myFont, range:NSMakeRange(0, textStorage.length));
textContainer.lineFragmentPadding = 0.0
layoutManager.glyphRangeForTextContainer(textContainer)
return layoutManager.usedRectForTextContainer(textContainer).size.height;
}
Appleが提供してくれててもいい気がしますが
ドキュメントでの紹介しかありません・・・