如何判斷UICollectionView 或 UItableView reload()函數(shù)結(jié)束洲尊?
正常開發(fā)中远豺,當(dāng)數(shù)據(jù)發(fā)生變化,只要調(diào)用下reload()函數(shù)坞嘀,就可以刷新數(shù)據(jù)躯护。但 是,如果需要在加載結(jié)束后丽涩,緊接著進(jìn)行一些業(yè)務(wù)處理棺滞,比如滑動到指定位置。
在我碰到的業(yè)務(wù)中矢渊,需要等待UICollectionView加載完畢后继准,滑動到底部。一般會使用setContentOffset()進(jìn)行滑動矮男,但是這時候獲取的contentSize是不準(zhǔn)確的移必。因為這時候的cell還沒有填充到UICollectionView中,所以contentOffset中可滑動的距離基本等于0毡鉴。
self.collectionView.reload()
self.collectionView.setContentOffset()
經(jīng)過一番搜索崔泵,發(fā)現(xiàn)可以使用CATransaction事務(wù)來幫助我們解決這個問題。
CATransaction.begin()
CATransaction.setCompletionBlock {
// collectionView reload結(jié)束后 滑動到最右邊猪瞬。
self.collectionView.setContentOffset()
}
self.collectionView.reloadData()
CATransaction.commit()
CATransaction可以幫助我們控制動畫的過程憎瘸,可以設(shè)置執(zhí)行時間,而其中的CompletionBlock是執(zhí)行結(jié)束的回調(diào)撑螺,我們可以把reload當(dāng)做一個事務(wù)進(jìn)行提交含思,當(dāng)其加載結(jié)束,自然會觸發(fā)我們后續(xù)的任務(wù)甘晤。