由于UICollectionView刷新數(shù)據(jù)一定是在主線程中完成的,也就是在主線程Runloop的某個周期內(nèi)完成的,而主線程只有一個串行事件隊列(DispatchQueue.main),因此可以想到將后續(xù)的任務(wù)添加到main queue中,從而串行的執(zhí)行reloadData -> ... -> 某個任務(wù)。至此就可以達(dá)到監(jiān)聽reloadData的完成狀態(tài)。形式可以如下幾種方法:
1、方法一
collectionView.reloadData()
DispatchQueue.main.async {
// TODO: 某個任務(wù)
}
2、方法二
collectionView.reloadData()
collectionView.performBatchUpdates(nil) { (_) in
// TODO: 某個任務(wù)
}
ps: UITableView的處理方式類似,不過方法二的處理只能iOS 11.0后才能使用。