iOS 开发:UITableView reloadData 之后获取的contentsize.height不正确

乜承嗣
2023-12-01

项目需求是tableView不需要上下滚动,又要能展示全部的cell,所以需要动态设置整个tableView的真实高度。又因为table中的cell也是动态高度的,所以整个table的高度只有通过contentsize.height动态获得。但是发现每次reloadData之后,contentsize.height的值都是cell的预估高度乘以总行数,而不是真实高度!!网上搜到方法很简单解决:

在使用UITableView 、UICollectionView ,调用reloadData方法之后,并不立即更新其contentSize。原因如下:http://jacksonriver.com/news/ios-adventures-uitableview-animation-callbacks-key-value-observing

若想使其立即更新contentSize,可以显示地调用 layoutSubviews 或 layoutIfNeeded。

文章中jacksonriver.com网站链接打不开了,所以还没研究不立即更新contentSize的原因。先记录备忘一下。

 

除了这个方法,这篇文章提到还有终极解决方案,用KVO解决。

 

参考文章:

https://www.cnblogs.com/ygm900/p/4794738.html

https://www.jianshu.com/p/11652063546f

 类似资料: