1. 程式人生 > >OC中獲取一串字串的高度(寬度確定)或寬度(高度確定)

OC中獲取一串字串的高度(寬度確定)或寬度(高度確定)

專案中我們有時會需要根據字串來確定UILabel的寬度或高度,如我們經常遇到的單元格自適應問題。如果是要動態知道UILabel的高度,那麼我們直接利用單元格自適應高度就可以。如果我們要獲取UILabel的寬度(為什麼要獲取UILabel的寬度?因為有時如果字串過長那麼UILabel的寬度就會相應發生變化),那麼就可以利用下面的方法:

CGSize size = [string sizeWithFont:font constrainedToSize:CGSizeMake(MAXFLOAT, 17)];  CGFloat w =size.width;

其實這個方法只是先獲取字串(字串的字型大小是確定了的

)的size再確定其寬度。從方法中可以看出我們固定了字串的高度為17,如果想要獲取字串的高度,那麼固定寬度就好了。

但這個方法已經不被蘋果官方建議使用了,而是被另一個方法所取代:

CGSize size = CGSizeMake(320,2000); //設定一個行高上限
NSDictionary *attribute = @{NSFontAttributeName: nameLabel.font};
CGSize labelsize = [nameLabel.text boundingRectWithSize:size options: NSStringDrawingTruncatesLastVisibleLine NSStringDrawingUsesLineFragmentOrigin NSStringDrawingUsesFontLeading attributes:attribute context:nil].size;
大家再看看單元格高度自適應是不是有什麼想法啊?