【发布时间】:2014-05-01 16:16:43
【问题描述】:
正如标题所说。我正在研究如何更改静态 UITableViewCell 的高度以适合内容。所以我有几个静态部分,每个部分都有 1 个 TableViewCell。里面的 UILabel 溢出了 UITableviewCell,我需要它来适应。
我正在努力解决的问题:
- 如何定位静态表格单元格(是否与动态相同?使用重用标识符?)
- 如何动态调整静态表格单元格的大小以适应内容?
【问题讨论】:
标签: ios uitableview
正如标题所说。我正在研究如何更改静态 UITableViewCell 的高度以适合内容。所以我有几个静态部分,每个部分都有 1 个 TableViewCell。里面的 UILabel 溢出了 UITableviewCell,我需要它来适应。
我正在努力解决的问题:
【问题讨论】:
标签: ios uitableview
你必须实现
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
因此,如果您想动态更改单元格的属性,请使用动态单元格,而不是静态的。
【讨论】: