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