更改静态UITableViewCell的高度以适合内容

时间:2014-05-01 16:16:44

标签: ios uitableview

就像标题所说的那样。我正在研究如何更改静态UITableViewCell的高度以适应内容。所以我有几个静态部分,每个部分都有1个TableViewCell。内部的UILabel溢出了UITableviewCell,我需要它适合。

enter image description here

我正在努力:

  • 如何定位静态表格单元格(是否与动态相同?使用重用标识符?)
  • 如何动态调整静态表格单元格以适应内容?

1 个答案:

答案 0 :(得分:1)

您必须实施

tableView:heightForRowAtIndexPath: 

UITableViewDelegate的方法。它是以编程方式计算单元格高度并在表格需要显示时将其返回到表格的唯一方法。

实施例

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *string = @"Your string";

    CGRect boundingBox = [string boundingRectWithSize:CGSizeMake(CGRectGetWidth(self.view.bounds), CGFLOAT_MAX)
                                              options:(NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading)
                                           attributes:@{NSFontAttributeName: [UIFont systemFontOfSize:14.0f]}
                                              context:nil];

    return CGRectGetHeight(boundingBox);
}

这个解决方案是最干净的,它的工作原理。上面的方法是委托协议的一部分,它似乎仍然可以用来调整故事板定义的样式和布局。但是,Apple不推荐它:

  

如果故事板中的表视图是静态的,则自定义子类   包含表视图的UITableViewController不应该   实现数据源协议。 - Table View Programming Guide for iOS

因此,如果您想动态更改单元格的属性,请使用动态单元格,而不是静态单元格。