就像标题所说的那样。我正在研究如何更改静态UITableViewCell的高度以适应内容。所以我有几个静态部分,每个部分都有1个TableViewCell。内部的UILabel溢出了UITableviewCell,我需要它适合。
我正在努力:
答案 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
因此,如果您想动态更改单元格的属性,请使用动态单元格,而不是静态单元格。