我有一个项目ID数组,用于支持集合视图。当用户滚动浏览集合视图时,每个单元格获取该ID的对象,然后获取与该对象关联的图像。如果对象碰巧没有与之关联的图像,我想从数组中删除该项ID,然后在屏幕上更新集合视图。问题是有很多对象没有图像(大量更新),我需要立即更新集合视图(没有动画时间)。
使用reloadData
会导致集合视图在删除每个对象时闪烁。使用deleteItemsAtIndexPaths
需要动画,这是不受欢迎的。有没有动画不是reloadData
?
答案 0 :(得分:2)
您需要使用禁用动画选项重新加载特定行。
[UIView setAnimationsEnabled:NO];
[collectionView performBatchUpdates:^{
[collectionView reloadItemsAtIndexPaths:indexPaths];
} completion:^(BOOL finished) {
[UIView setAnimationsEnabled:YES];
}];
答案 1 :(得分:0)
这是Swift 5版本,其执行方式略有不同:
UIView.performWithoutAnimation {
self.collectionView.performBatchUpdates({
self.collectionView.insertItems(at: indexPaths)
}, completion: nil)
}