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大小。