判斷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當做一個事務進行提交,當其加載結束,自然會觸發我們後續的任務。

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