在不使用固定值的情况下计算单元格高度

时间:2012-10-21 21:06:03

标签: objective-c uitableview

我需要计算包含多行包装文本的UITableViewCell的高度。到目前为止,我找不到100%准确的方法来做到这一点。此外,我目前使用的技术在很大程度上依赖于固定值:

NSString *cellText;    
cellText = @"Very long multi line text in this String ...";
UIFont *cellFont = [UIFont fontWithName:@"Helvetica" size:14.0];
CGSize constraintSize = CGSizeMake(280.0f, MAXFLOAT);
CGSize labelSize = [cellText sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:NSLineBreakByWordWrapping];
return labelSize.height + 32;

仅在以下几行中使用的固定值:

  • 字体大小(14)
  • 字体类型(Helvetica)
  • CGSize,宽度(280.0f)
  • 我发现需要随机填充值(32)

有没有一种很好的方法可以通过动态获取和计算所有这些固定值来重写它?

这将有助于使布局更具响应性,并且代码可以重复使用。我很欣赏任何最佳实践。

1 个答案:

答案 0 :(得分:1)

你的代码似乎很好,但你错过的是单元格适当的计算。我需要在单元格(parentView)中添加标签的最顶层位置和标签的最底部位置。

就像这样计算

 return labelSize.height + 2*yourLabelInCell.frame.origin.y  //here label's topmost postion and label's bottommost postion in cell added

标签将在单元格中适当调整。