【发布时间】:2016-06-30 09:19:47
【问题描述】:
我想计算我的UITableView 的内容大小。我正在使用高度为UITableViewAutomaticDimension 的自动布局。
重新加载tableview后尝试获取[UITableView contentsize],在这种情况下,高度将根据estimatedRowHeight计算。
self.tableView.estimatedRowHeight = 50;
self.tableView.rowHeight = UITableViewAutomaticDimension;
代表 -
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
return UITableViewAutomaticDimension;
}
尝试获取内容大小并将其分配给高度约束。
[self.tableView reloadData];
[self.tableView layoutIfNeeded];
self.tableHeightConstraint.constant = self.tableView.contentSize.height;
有什么建议吗?提前致谢。
编辑:
最后我通过一些调整解决了我的问题。在重新加载表格数据之前,我将表格视图高度更改为最大值(在我的情况下为 300 最大值),因此表格视图有空间来调整所有单元格的大小。
self.tableHeightConstraint.constant = 300;
[self.tableView reloadData];
[self.tableView layoutIfNeeded];
self.tableHeightConstraint.constant = self.tableView.contentSize.height;
感谢您的帮助。
【问题讨论】:
-
你能详细解释一下问题吗?
-
我想要 tableview 的 contentsize。所以我可以根据 contentsize 更改 tableview 和 superview 框架。我正在使用自动布局和 UITableViewAutomaticDimension。所以它不能正常工作。
-
如果您使用的是
Autolayout,则无法更改框架。你需要玩NSLayoutContraints。 -
tableView的containerView是什么?是滚动视图吗?
-
什么时候需要更新 contentSize?是收到回复的时候吗?
标签: ios uitableview autolayout