UITableView,cell使用autolayout,contentSize不准确的问题
当使用autolayout让cell自动算高时,会设置
table.estimatedRowHeight = 100;
table.rowHeight = UITableViewAutomaticDimension;
这时候获取contenSize 得到是以estimatedRowHeight 为cell高度算出来的,很明显是不准确的。
而且有时候就算在layoutsubviews 方法里也得不到正确的contentSize
如何解决:
- 先调用reloadData
- 再用GCD回到主线程
- 在主线程里加入UIView动画,调layoutIfNeeded
在主线程block里即可得到正确的contentSize
代码如下:
_tableViewConstraint.constant = CGFloat_MAX;
[_tableView reloadData];
[_tableView layoutIfNeeded];
_tableViewConstraint.constant = _tableView.contentSize.height;
原理: 先给tableView设置一个极大值,让tableView有空间来处理各cell大小。
本文解决UITableView使用AutoLayout时,contentSize计算不准确的问题。通过reloadData与GCD配合,调整约束,确保主线程中获取正确contentSize,实现流畅布局。
6506

被折叠的 条评论
为什么被折叠?



