删除额外的填充以适合精确测量的文本

UITextView 默认有额外的填充。有时它很烦人,特别是如果你想测量一些没有视图实例的文本并将它们精确地放在某个区域。

这样做是为了删除这样的填充物。

messageTextView.textContainerInset = UIEdgeInsetsZero
messageTextView.textContainer.lineFragmentPadding = 0

现在,你可以使用 NSAttributedString.boundingRectWithSize(...) 测量文本大小,并调整 UITextView 的大小以使其适合文本。

let budget = getSomeCGSizeBudget()
let text = getSomeAttributedString()
let textSize = text.boundingRectWithSize(budget, options: [.UsesLineFragmentOrigin, .UsesFontLeading], context: nil).size
messageTextView.frame.size = textSize // Just fits.