在performBatchUpdates上具有自定义单元大小的UICollectionView自定义布局动画故障

时间:2018-01-26 19:00:30

标签: uicollectionviewlayout

根据理查德·特顿(Richard Turton)撰写的this one等精彩文章,通过自定义布局在uicollectionview中自我调整单元格的理解, 处理自我调整单元格的方法是通过

  1. prepare中的细胞/视图设置估计的大小,因为他们有机会使用真实的自动布局计算更新自己
  2. 在单元格中提供preferredLayoutAttributesFitting,其中单元格计算首选属性(框架),
  3. 布局反复无效,直到通过invalidationContext(forPreferredLayoutAttributes:withOriginalAttributes)
  4. 覆盖这些内容

    在初始加载时,这似乎对我来说很好。但是,在通过调用collectionView.performBatchUpdates驱动的更改中,我会看到prepare中设置的估计大小的单元格闪现,或者有时会结束(如果我尝试用初始大小为它们制作动画。)

    我遵循了流程,我看到通过失效流程正确提供了属性。虽然prepare被多次调用(包括在通过首选属性失效正确设置属性之后)。这似乎踩到了正确的大小,至少是暂时的,导致动画故障(或最终布局不好)。

    我唯一能够找到调用performBatchUpdates on the interwebs的工作解决方案,跳过尝试使用首选属性方法并调用UICV上的委托方法在prepare方法内部,以便在该步骤中获得正确的大小,但这似乎违背了工具。

    也许是known issue

    仅供参考,与几位收藏视图工程师交谈,这似乎是一个错误。他们建议使用参考单元手动调整大小。

1 个答案:

答案 0 :(得分:0)

我对collectionview中的浮动标头有类似的问题。它可能有助于检查:UICollectionView sticky header disappears for while after inserting section when collection is overscrolled (bounce effect)