ios - 使用自动布局时 UITableView 内容大小

标签 ios uitableview autolayout

我想计算我的 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/

相关文章:

ios - NSXMLParserErrorMessage 内部错误 : Huge input lookup

ios - 与 UITableView 外部的其他按钮相比,TableHeaderView 中的自定义 UIButton 响应速度不快

ios - 如何使用堆栈 View 来自动布局标签和按钮?

ios - UIPopover 在单元格中的位置

ios - 建议在不使用 MacOS 或 Xcode 的情况下在 iOS(最好是 9 及更高版本)上启用开发人员选项的任何解决方法?

ios - 添加 UITableViewController.view 作为 subview 表现不佳

ios - 在表格 View 中添加动态图片

ios - 添加导航 Controller 可防止在 Root View Controller 中调用 updateViewConstraints

html - iphone 4 上的背景图像问题

ios - 无法将 UIView 移到 UITableView 上