如何在没有动画的情况下从集合视图中删除项目?
Posted
技术标签:
【中文标题】如何在没有动画的情况下从集合视图中删除项目?【英文标题】:How can I delete an item from a collection view without animation? 【发布时间】:2016-10-06 23:51:08 【问题描述】:我有一个支持集合视图的项目 ID 数组。当用户滚动浏览集合视图时,每个单元格获取该 ID 的对象,然后获取与该对象关联的图像。如果一个对象碰巧没有与之关联的图像,我想从数组中删除该项目 ID,然后更新屏幕上的集合视图。问题是有很多没有图像的对象(大量更新),我需要立即更新集合视图(没有时间动画)。
使用reloadData
会导致集合视图在每个对象被删除时闪烁。使用deleteItemsAtIndexPaths
需要不受欢迎的动画。有什么方法可以从没有动画的集合视图中删除不是reloadData
的项目?
【问题讨论】:
【参考方案1】:这是一个 Swift 5 版本,其实现方式略有不同:
UIView.performWithoutAnimation
self.collectionView.performBatchUpdates(
self.collectionView.insertItems(at: indexPaths)
, completion: nil)
【讨论】:
【参考方案2】:您需要使用禁用动画选项重新加载特定行。
[UIView setAnimationsEnabled:NO];
[collectionView performBatchUpdates:^
[collectionView reloadItemsAtIndexPaths:indexPaths];
completion:^(BOOL finished)
[UIView setAnimationsEnabled:YES];
];
【讨论】:
以上是关于如何在没有动画的情况下从集合视图中删除项目?的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有 single.php 的情况下从 wordpress 帖子中删除特色图片
如何在没有插件的情况下从特定类别的帖子的 URL 中删除日期?
如何在没有 root 的情况下从 Ubuntu 18.04.3 中完全删除节点?