如何在没有动画的情况下从集合视图中删除项目?

时间:2016-10-06 23:51:08

标签: ios uicollectionview uicollectionviewlayout

我有一个项目ID数组,用于支持集合视图。当用户滚动浏览集合视图时,每个单元格获取该ID的对象,然后获取与该对象关联的图像。如果对象碰巧没有与之关联的图像,我想从数组中删除该项ID,然后在屏幕上更新集合视图。问题是有很多对象没有图像(大量更新),我需要立即更新集合视图(没有动画时间)。

使用reloadData会导致集合视图在删除每个对象时闪烁。使用deleteItemsAtIndexPaths需要动画,这是不受欢迎的。有没有动画不是reloadData

从集合视图中删除项目的方法

2 个答案:

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