重新加载集合视图时的虚假单元重新排序

时间:2014-06-17 15:35:07

标签: ios uicollectionview

我正在重新加载集合视图,并且单元格重用顺序似乎是不确定的。

这本身并不是问题,但是我正在使用SDWebImage异步加载图像并使用GPUImage过滤它们(据我所知,它也是异步工作的)。结果是令人讨厌的闪烁,即使集合视图内容没有改变,因为它几乎总是交换相邻的单元格。

当然,我可以添加一些具有后处理图像的同步内存缓存,因此在配置单元格之前设置图像,而不是稍后回调,但它是以不必要的增加为代价的。复杂性,我想避免。

有没有办法在没有集合视图单元重用的情况下“就地”重新加载单个集合视图单元?

1 个答案:

答案 0 :(得分:1)

应该使用批量更新来插入和删除单个行,而不是完全重新加载。它保留了现有的细胞。

之前

[collectionView reloadData];

[collectionView performBatchUpdates:^() {
    // Use insertItemsAtIndexPaths, deleteItemsAtIndexPaths,
    // insertSections, deleteSections
    // to add and delete sections and rows
} completion:nil];

缺点是刷新逻辑会变得更加复杂,因为您需要区分先前和当前的数据源。