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

Ios 如何在没有动画的情况下从集合视图中删除项目?,ios,uicollectionview,uicollectionviewlayout,Ios,Uicollectionview,Uicollectionviewlayout,我有一个支持集合视图的项ID数组。当用户在集合视图中滚动时,每个单元格都会获得该ID的对象,然后是与该对象关联的图像。如果一个对象恰好没有与其关联的图像,我想从数组中删除该项ID,然后更新屏幕上的集合视图。问题是有很多对象没有图像(很多更新),我需要立即更新集合视图(没有时间制作动画) 使用reloadData会在删除每个对象时导致集合视图闪烁。使用DeleteItemSatinExpaths需要不需要的动画。要从集合视图中删除没有动画的项,而该动画不是reloadData?您需要使用禁用动画选

我有一个支持集合视图的项ID数组。当用户在集合视图中滚动时,每个单元格都会获得该ID的对象,然后是与该对象关联的图像。如果一个对象恰好没有与其关联的图像,我想从数组中删除该项ID,然后更新屏幕上的集合视图。问题是有很多对象没有图像(很多更新),我需要立即更新集合视图(没有时间制作动画)


使用
reloadData
会在删除每个对象时导致集合视图闪烁。使用
DeleteItemSatinExpaths
需要不需要的动画。要从集合视图中删除没有动画的项,而该动画不是
reloadData

您需要使用禁用动画选项重新加载特定行

[UIView setAnimationsEnabled:NO];

[collectionView performBatchUpdates:^{
    [collectionView reloadItemsAtIndexPaths:indexPaths];
} completion:^(BOOL finished) {
    [UIView setAnimationsEnabled:YES];
}];

以下是一个Swift 5版本,使用的方式略有不同:

UIView.performWithoutAnimation {
    self.collectionView.performBatchUpdates({
        self.collectionView.insertItems(at: indexPaths)
    }, completion: nil)
}