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