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

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 中完全删除节点?

如何在没有 IBOutlet 或标识符的情况下从 Storyboard 更新约束?

如何在没有任何循环php的情况下从数组中随机获取项目

如何在android中删除底部导航视图的图标动画