【问题标题】:Spurious cell reordering when collection view is reloaded重新加载集合视图时的虚假单元格重新排序
【发布时间】:2014-06-17 15:35:06
【问题描述】:

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

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

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

有没有一种方法可以“就地”重新加载单个集合视图单元格,而不会重复使用集合视图单元格?

【问题讨论】:

    标签: ios uicollectionview


    【解决方案1】:

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

    之前

    [collectionView reloadData];
    

    之后

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-08
      • 1970-01-01
      • 2011-07-27
      相关资源
      最近更新 更多