刪除額外的填充以適合精確測量的文字

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.