通常對於CoreText之類自己實現繪製的控件來說,計算富文本的寬高其實需要依賴CTFramesetterSuggestFrameSizeWithConstraints這個方法。
但有些時候,我們可能只是使用UILable、UITextView等系統控件,設置了他們的attributedText,此時,計算控件寬高其實可以利用系統自身的方法。
例如:
label.attributedText = attributedString;
只需要使用
h = [label sizeThatFits:CGSizeMake(100,CGFLOAT_MAX)].height
即可獲得相應的高度,即可用於後續的高度計算。
這個小技巧希望對大家有幫助。
當然,如果你使用autolayout,這種根據內容調整控件大小的工作則會更加簡單,只要設置好相應的約束即可。