iOS7以下的系统可使用方法
//获得当前cell高度
CGRect frame = [self frame];
//文本赋值
self.introduction.text = text;
//设置label的最大行数
self.introduction.numberOfLines = 0;
CGSize size = CGSizeMake(300, 1000);
CGSize labelSize = [self.introduction.text sizeWithFont:self.introduction.font constrainedToSize:size lineBreakMode:NSLineBreakByClipping];
NSLog(@"w = %f", labelSize.width);
NSLog(@"h = %f", labelSize.height);
iOS7以上才支持的方法
// NSAttributedString *attrStr = [[NSAttributedString alloc] initWithString:self.introduction.text];
//// self.introduction.attributedText = attrStr;
// NSRange range = NSMakeRange(0, attrStr.length);
// NSDictionary *dic = [attrStr attributesAtIndex:0 effectiveRange:&range];
NSDictionary *dic = @{NSFontAttributeName: self.introduction.font};
CGSize labelSize1 = [self.introduction.text boundingRectWithSize:size options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:dic context:nil].size;
NSLog(@"w = %f", labelSize1.width);
NSLog(@"h = %f", labelSize1.height);
self.introduction.frame = CGRectMake(self.introduction.frame.origin.x, self.introduction.frame.origin.y, labelSize1.width, labelSize1.height);
//计算出自适应的高度
frame.size.height = labelSize1.height+100;
self.frame = frame;
iOS6以上才支持的方法
NSAttributedString *str = [[NSAttributedString alloc] initWithString:self.introduction.text];
NSAttributedString *str1 = [[NSAttributedString alloc] initWithString:self.introduction.text attributes:@{NSFontAttributeName : self.introduction.font}];
CGSize size1 = [str boundingRectWithSize:size options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading context:nil].size;
CGSize size2 = [str1 boundingRectWithSize:size options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading context:nil].size;