如何获得iOS自动布局计算的动态单元格高度?

时间:2015-03-28 06:38:16

标签: ios uitableview

我使用多行UILabel创建了一个具有动态单元格高度的简单UITableViewController。我让iOS自动布局为我做计算。所以我自己没有计算任何高度。但是现在,我想采用iOS自动布局返回给我的任何高度并将其增加N.我不确定如何在不重新设置tableView(_:heightForRowAtIndexPath:)的情况下进行操作。

2 个答案:

答案 0 :(得分:1)

您可以使用:

CGRect frame = [tableView rectForRowAtIndexPath:indexPath];
NSLog(@"row height : %f", frame.size.height);

这样:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;

{
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    CGRect frame = cell.frame;
    CGFLoat heightOfRow = frame.size.height;
    return heightOfRow +n;

}

编辑:

在设置表之前,似乎你无法对高度做任何事情,解决这个问题的唯一方法是让表加载然后用新的高度重新加载...可以这样做:

-(void)viewDidLayoutSubviews{
     [super viewDidLayoutSubviews];
     UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
     CGRect frame = cell.frame;
     self.heightOfRow = frame.size.height;
     [self.tableView reloadData];

}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;

{

    return self.heightOfRow +n;

}

您可能需要在此处粘贴一个BOOL,因此它只会执行一次。

答案 1 :(得分:-2)

我会用代码更新我的答案。

请在iOS8中找到以下代码

self.tableView.estimatedRowHeight = 100;
self.tableView.rowHeight = UITableViewAutomaticDimension;