判断UICollectionView 或 UITableView reload()结束

如何判断UICollectionView 或 UItableView reload()函数结束?

正常开发中,当数据发生变化,只要调用下reload()函数,就可以刷新数据。但 是,如果需要在加载结束后,紧接着进行一些业务处理,比如滑动到指定位置。

在我碰到的业务中,需要等待UICollectionView加载完毕后,滑动到底部。一般会使用setContentOffset()进行滑动,但是这时候获取的contentSize是不准确的。因为这时候的cell还没有填充到UICollectionView中,所以contentOffset中可滑动的距离基本等于0。

self.collectionView.reload()
self.collectionView.setContentOffset()

经过一番搜索,发现可以使用CATransaction事务来帮助我们解决这个问题。

CATransaction.begin()
CATransaction.setCompletionBlock {
    // collectionView reload结束后 滑动到最右边。
    self.collectionView.setContentOffset()
}
self.collectionView.reloadData()
CATransaction.commit()

CATransaction可以帮助我们控制动画的过程,可以设置执行时间,而其中的CompletionBlock是执行结束的回调,我们可以把reload当做一个事务进行提交,当其加载结束,自然会触发我们后续的任务。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容