今天做UIlabel自适应高度的时候,快郁闷死了,后台返回的不是一个完整的字符串,所以以前的那套代码已经没有效果了,钻研了一会之后终于搞出来了,做下记录:
1、设置最大显示行数(=0时不限制),自适应需要设置为0:
label.numberOfLines = 0;
2、设置text属性的文本内容:
label.text = @""; //内容需要够长才能显示效果
3、设置文字自动填满Label
[label sizeToFit];
4、计算CGRect
CGRect rect = [label.text boundingRectWithSize:CGSizeMake(self.view.frame.size.width - 20, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName: label.font} context:nil];
5、重新设置UIlabel的frame
label.frame=CGRectMake(0,0,self.view.frame.size.width - 20, rect.size.height);
6、然后设置cell的行高为rect.size.height(可以先把rect.size.height赋值给一个全局的CGFloat对象,然后返回cell的高度时,把CGFloat对象返回)如:
_cellHeight=rect.size.height;
-(CGFloat)tableView:(UITableView*)tableView heightForRowAtIndexPath:(NSIndexPath*)indexPath{
return _cellHeight;
}
网友评论