iOS开发获取tableView,collectionView reloaddata 执行结束布局生效时机

   在进行iOS开发的过程中,常常需要获取到UITableView,UICollectionView执行reloaddata结束以后布局生效的时机,我这边的需求是获取这个时机进行展示打点。
之前对于这两个时机的捕获分别是用了如下的方法
UITableView:
iOS开发获取tableView,collectionView reloaddata 执行结束布局生效时机_第1张图片
UICollectionView:

通过查看官方文档可以知道这些方法的目的和我的并不一致,在项目的一些复杂页面就会出现这样或者那样的兼容,布局异常问题。

为了解决这个问题必须要思考一个问题,为什么执行了reloaddata后没有立即执行刷新UI的操作?如何才可以做到reloaddata以后立即刷新UI。
参考如下文章:
《setNeedsLayout与layoutIfNeeded的区别》
我们知道执行了reloaddata后,实际告诉了系统有待刷新的东西,需要等到下个runloop周期才可以刷新。所以我们在实际的操作中执行完了reloaddata后并不能立即获取刷新后的状态。为了立即获取我们首先要强制标记一下有待刷新的东西,同时立即刷新。以tableView为例,具体代码如下:

[self.tableView reloaddata];
[self.tableView setNeedsLayout];
[self.tableView layoutIfNeed];

欢迎大家多多批评指正。
更多干货文章,欢迎扫描二维码关注公众号
这里写图片描述

你可能感兴趣的:(IOS)