动态计算细胞高度

时间:2015-12-16 10:08:45

标签: ios

我有tableview,其中单元格内有uilabellabel根据文本采用可变高度。我的代码在

之下
- (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知道动态计算单元格高度的最简单方法,并纠正设置约束的方法。

1 个答案:

答案 0 :(得分:2)

如果您使用的是autolayout,那么它将是最简单的。只需为UILabel添加top,left,right和botton约束,将numberofLines设置为0,将换行模式设置为wordWrap 。并在heightForRow方法中传递UITableViewAutomaticDimension

PS 如果您的单元格中只有标签,则使用UITableViewCell并使用其文本标签,而不是使用自定义单元格。然后您不必管理任何约束