Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 重新加载集合视图时伪单元格重新排序_Ios_Uicollectionview - Fatal编程技术网

Ios 重新加载集合视图时伪单元格重新排序

Ios 重新加载集合视图时伪单元格重新排序,ios,uicollectionview,Ios,Uicollectionview,我正在重新加载一个集合视图,单元重用顺序似乎是不确定的 这本身并不是一个问题,但我正在使用SDWebImage异步加载图像,并使用GPUImage对其进行过滤(据我所知,GPUImage也可以异步工作)。结果是令人讨厌的闪烁,即使在集合视图内容没有更改时也是如此,因为它几乎总是交换相邻的单元格 当然,我可以添加一些具有后处理图像的同步内存缓存,因此图像是在配置单元之前设置的,而不是稍后的回调,但这是以不必要的复杂性增加为代价的,我希望避免这种情况 是否有一种方法可以在不重新使用集合视图单元格的情

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

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

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


是否有一种方法可以在不重新使用集合视图单元格的情况下“就地”重新加载单个集合视图单元格?

应该使用批处理更新来插入和删除单个行,而不是完全重新加载。它将现有单元保持在适当的位置

之前 之后 缺点是刷新逻辑可能变得更加复杂,因为您需要区分以前的数据源和当前的数据源

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