一般来说 在iOS 中若UITableViewCell 固定行高, 会通过
self.tableView.rowHeight = 44;
这样来设置.
- 若不是固定行高, 可能出现多种高度, 可以通过tableView的代理方法实现,在下面方法中实现:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if ( ...条件1...) {
return 20.f;
}
if ( ...条件2...) {
return 40.f;
}
return 44.f;
}
- 如果需要由系统自动估算行高, 可以通过设置以下代码实现:
self.tableView.estimatedRowHeight = 55;
self.tableView.rowHeight = UITableViewAutomaticDimension;
问题: 一般来说, 当用户实现了heightForRow的代理方法, 系统会跟据代理方法的返回值设置行高, 如果没有实现代理方法, 系统会根据self.tableView.rowHeight的值设置行高; 那么如果我们既想让系统自动估算行高, 又想指定满足一定条件下的行高, 我们该怎么办呢? 我们可以通过下面的方法实现:
- 设置估算行高:
self.tableView.estimatedRowHeight = 55;
self.tableView.rowHeight = UITableViewAutomaticDimension;
- 通过代理方法指定满足一定条件的行高:(重点: 代理方法的最后返回值一定要是UITableViewAutomaticDimension), 这样系统才知道这一行需要估算,代码如下:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if ( ...条件1...) {
return 20.f;
}
if ( ...条件2...) {
return 40.f;
}
return UITableViewAutomaticDimension;
}
以上方法实际可用, 供参考.