由于textview带有超链接,拨打电话,以及识别邮箱功能,还有长按复制等,所以有些时候需要用textview显示文字,自己定义的识别这些的lable不一定比textview好用,
CGRect rect = [eventComment.tContent boundingRectWithSize:CGSizeMake(gScreenWidth - self.tNameFrame.origin.x - MHEventCellImageMargin, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:Font(16)} context:nil];
但是遇到了非常棘手的问题,比如在特定宽度下,有些文字折行到最后一行后,恰恰剩了一个字,那么这个字就被忽略了,如果按这个测量出来的高度赋值给lable就不会出问题,
话不多说,上代码:
/**
* 计算出合理的高度
*/
- (float) heightForString:(NSString *)value fontSize:(float)fontSize andWidth:(float)width
{
UITextView *detailTextView = [[UITextView alloc]initWithFrame:CGRectMake(0, 0, width, 0)];
detailTextView.font = [UIFont systemFontOfSize:fontSize];
detailTextView.text = value;
CGSize deSize = [detailTextView sizeThatFits:CGSizeMake(width,CGFLOAT_MAX)];
return deSize.height;
}
这个方法出处是csdn,stackoverflow也有类似