我有原型细胞。我里面有几个标签。我使用自动布局来调整其中一个标签以更改高度和适合内容。我需要调整整个UITableViewCell
的大小。
在事件heightForRowAtIndexPath
上,我创建了一个虚拟单元格来计算高度。我使用以下example。我必须设置正确的高度。我的问题是它返回0.
我认为的问题在于以下代码:
CGSize size = [self.prototypeCell.contentView
systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];
return size.height+1;
内容视图的高度为44,但方法返回0.结果我看到单元格高度为1。
修改
我的整个方法的代码是:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
[self configureCell:self.prototypeCell forRowAtIndexPath:indexPath];
self.prototypeCell.bounds = CGRectMake(0.0f, 0.0f, CGRectGetWidth(self.twDetails.bounds), CGRectGetHeight(self.prototypeCell.bounds));
//[self.prototypeCell layoutIfNeeded];
[self.prototypeCell.contentView setNeedsLayout];
[self.prototypeCell.contentView layoutIfNeeded];
CGSize size = [self.prototypeCell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];
return size.height+1;
}
编辑2:
我认为我错误地在这个地方再次调用configureCell:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
PESvcPaymentDetailsCell *dispositionCell = [tableView dequeueReusableCellWithIdentifier:dispositionCellIdentifier forIndexPath:indexPath];
if(indexPath.row <= singApp.operationPostpaidDispositionsList.dispositionsCount - 1) {
[self configureCell:dispositionCell forRowAtIndexPath:indexPath];
}
else {
}
//[tvCellsArray addObject:dispositionCell];
return dispositionCell;
}
所以我可以通过这样做再次初始化它吗?
答案 0 :(得分:0)
试试这个。您需要临时为indexPath重新配置自定义单元格并返回其高度。
在您的configureCell:forRowAtIndexPath:方法中 - 确保您正在向单元格的contentView添加任何视图/标签。
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
// Instantiate a mock custom cell
PESvcPaymentDetailsCell *dispositionCell = [[PESvcPaymentDetailsCell alloc] init];
// Configure it based on the index path
[self configureCell:dispositionCell forRowAtIndexPath:indexPath];
// Make sure its frame is updated
[dispositionCell.contentView setNeedsLayout];
[dispositionCell.contentView layoutIfNeeded];
// Return the height
return [dispositionCell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height;
}