我有tableview
,其中单元格内有uilabel
。 label
根据文本采用可变高度。我的代码在
- (CGFloat)getLabelHeight:(UILabel*)label
{
CGSize constraint = CGSizeMake(label.frame.size.width-10, 1000.0f);
CGSize size;
NSStringDrawingContext *context = [[NSStringDrawingContext alloc] init];
CGSize boundingBox = [label.text boundingRectWithSize:constraint
options:NSStringDrawingUsesLineFragmentOrigin
attributes:@{NSFontAttributeName:label.font}
context:context].size;
size = CGSizeMake(ceil(boundingBox.width), ceil(boundingBox.height));
return size.height;
}
但设置constraint
很困难。 AnyOne知道动态计算单元格高度的最简单方法,并纠正设置约束的方法。
答案 0 :(得分:2)
如果您使用的是autolayout
,那么它将是最简单的。只需为UILabel
添加top,left,right和botton约束,将numberofLines
设置为0,将换行模式设置为wordWrap 。并在heightForRow
方法中传递UITableViewAutomaticDimension
。
PS 如果您的单元格中只有标签,则使用UITableViewCell
并使用其文本标签,而不是使用自定义单元格。然后您不必管理任何约束