我想计算我的 UITableView
的内容大小。我正在使用高度为 UITableViewAutomaticDimension
的自动布局。
尝试在重新加载 tableview 后获取 [UITableView contentsize]
,在这种情况下,高度是根据 estimatedRowHeight
计算的。
self.tableView.estimatedRowHeight = 50;
self.tableView.rowHeight = UITableViewAutomaticDimension;
委托(delegate) -
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
return UITableViewAutomaticDimension;
}
尝试获取内容大小并将其分配给高度限制。
[self.tableView reloadData];
[self.tableView layoutIfNeeded];
self.tableHeightConstraint.constant = self.tableView.contentSize.height;
有什么建议吗?提前致谢。
编辑:
最后我通过一些调整解决了我的问题。在重新加载表上的数据之前,我将 tableview 高度更改为最大(在我的例子中是最大 300),因此 tableview 有空间来调整所有单元格的大小。
self.tableHeightConstraint.constant = 300;
[self.tableView reloadData];
[self.tableView layoutIfNeeded];
self.tableHeightConstraint.constant = self.tableView.contentSize.height;
感谢您的帮助。
最佳答案
最后我通过一些调整解决了我的问题。在重新加载表上的数据之前,我将 TableView 高度更改为最大值(Objective-C:CGFLOAT_MAX
,Swift:CGFloat.greatestFiniteMagnitude
),因此 TableView 有空间来调整所有单元格的大小。
objective-C :
self.tableHeightConstraint.constant = CGFLOAT_MAX;
[self.tableView reloadData];
[self.tableView layoutIfNeeded];
self.tableHeightConstraint.constant = self.tableView.contentSize.height;
swift :
tableHeightConstraint.constant = CGFloat.greatestFiniteMagnitude
tableView.reloadData()
tableView.layoutIfNeeded()
tableHeightConstraint.constant = contentTableView.contentSize.height
发布此内容,以便对其他人有所帮助。
关于ios - 使用自动布局时 UITableView 内容大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36002741/