在cell中要定义完成约束。尤其是能确定cell大小的上下约束,否则可能计算出来错误的大小,或者Xcode会打印一大堆约束警告
计算的过程很简单
- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
/*
UITableViewCell *cell = [tableViewcellForRowAtIndexPath:indexPath];
这里这个方法不能使用,否则会有内存泄露
*/
/*
[_cell setNeedsUpdateConstraints];
[_cell updateConstraintsIfNeeded];
return [_cell.contentViewsystemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height+1;
*/
UITableViewCell *cell = _cellDict[kStringIntegerType(indexPath.row)]; // 从字典中取出cell
[cell setNeedsUpdateConstraints];
[cell updateConstraintsIfNeeded];
return [cell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height+1;
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *cellIdentifier = @"cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (!cell) {
cell = [[[NSBundle mainBundle] loadNibNamed:@"cell" owner:self options:nil] firstObject];
}
[_cellDict setObject:cell forKey:kStringIntegerType(indexPath.row)]; //将cell放入字典中
return cell;
}