判断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当做一个事务进行提交,当其加载结束,自然会触发我们后续的任务。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章