OC中計(jì)算文本高度的方法有以下幾種:
1.利用NSString的sizeWithFont:constrainedToSize:lineBreakMode:計(jì)算
(該方法在iOS7.0以上已經(jīng)廢棄),代碼如下:
size = [text sizeWithFont:[UIFontsystemFontOfSize:fontSize] constrainedToSize:CGSizeMake(maxWidth,MAXFLOAT) lineBreakMode:NSLineBreakByCharWrapping];//折行方式
2.利用NSString的boundingRectWithSize:options:attributes:context:計(jì)算
該方法為iOS7.0以上新增方法,代碼如下:
CGSize textSize;
NSStringDrawingOptions option = NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading;
//NSStringDrawingTruncatesLastVisibleLine如果文本內(nèi)容超出指定的矩形限制雹舀,文本將被截去并在最后一個(gè)字符后加上省略號(hào)蛙埂。 如果指定了NSStringDrawingUsesLineFragmentOrigin選項(xiàng)拴测,則該選項(xiàng)被忽略 NSStringDrawingUsesFontLeading計(jì)算行高時(shí)使用行間距闹炉。(注:字體大小+行間距=行高)
NSDictionary *attributes = [NSDictionary dictionaryWithObject:font forKey:NSFontAttributeName];
CGRect rect = [self boundingRectWithSize:size
options:option
attributes:attributes
context:nil];
//經(jīng)測(cè)試坪郭,向上取整可以減少誤差
textSize.height = ceilf(rect.size.height);
textSize.width = ceilf(rect.size.width);
由于我現(xiàn)在的項(xiàng)目只需要適配8以上的圾结,所以就封裝了一個(gè)擴(kuò)展格二,方便調(diào)用劈彪,地址如下:
NSString+Size
參考文章:
http://blog.csdn.net/hanhailong726188/article/details/42327725
http://blog.csdn.net/jymn_chen/article/details/10949279
http://blog.csdn.net/hello_hwc/article/details/46731991