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)
})
}