我想用一些有趣的动画重新加载UICollectionView。在UITableView中有一个名为reloadSections:withRowAnimation
的方法。
但是在UICollectionView中只有reloadSections
。
如何自定义reloadSections动画?我肯定在App Store的应用程序中看到了这一点。
答案 0 :(得分:30)
就这样做:
[self.collectionView performBatchUpdates:^{
[self.collectionView reloadSections:[NSIndexSet indexSetWithIndex:0]];
} completion:nil];
答案 1 :(得分:20)
Swift 3版本:
collectionView.performBatchUpdates({
let indexSet = IndexSet(integer: 0)
self.collectionView.reloadSections(indexSet)
}, completion: nil)
答案 2 :(得分:2)
这篇文章值得一读: http://victorlin.me/posts/2016/04/29/uicollectionview-invalid-number-of-items-crash-issue
TLDR:
所以事实证明,在调用给定的闭包之前,performBatchUpdates首先调用collectionView(:numberOfItemsInSection :)以了解项目编号。接下来,它调用闭包,最后再次调用collectionView(:numberOfItemsInSection :)来检查数字。这里是抛出断言异常的地方。