执行到reloadData()方法会立刻返回,不会等到刷新完成才返回

UITableView和UICollectionView都有reloadData方法。

如题,可以理解为reloadData()方法是一个异步的方法,非同步执行完成其内部的代码。执行到collectionView.reloadData()就立刻返回,此时collectionView还未真的刷新完成。

比如有一个需求是,数据源list新增几条数据,刷新collectionView后立刻更新collectionView的约束。

以下代码有问题:

执行第二行代码时collectionView还未刷新完成,此时获取的self.collectionView.contentSize.height还是原来的值

collectionView.reloadData()
self.collectionView.snp.updateConstraints({ (make) in
     make.height.equalTo(self.collectionView.contentSize.height)
})

改动如下:

collectionView.reloadData()
DispatchQueue.main.async {            
    self.collectionView.snp.updateConstraints({ (make) in
        make.height.equalTo(self.collectionView.contentSize.height)           
    })        
}


你可能感兴趣的:(iOS,swift,reloadData不立刻刷新)