UICollectionView 自定义布局动画故障,在 performBatchUpdates 上具有自我调整单元格大小
Posted
技术标签:
【中文标题】UICollectionView 自定义布局动画故障,在 performBatchUpdates 上具有自我调整单元格大小【英文标题】:UICollectionView Custom Layout animation glitch with self sizing cell size on performBatchUpdates 【发布时间】:2018-01-26 19:00:29 【问题描述】:根据我对具有自定义布局的 uicollectionview 中的自定尺寸单元格的理解,参考了 Richard Turton 的 this one 等精彩文章, 处理自定尺寸单元格的方法是通过
-
在
prepare
中为您的单元格/视图设置估计大小,因为它们将有机会使用真正的自动布局计算来更新自己
在单元格本身计算首选属性(框架)的单元格中提供preferredLayoutAttributesFitting
,
布局反复使自己失效,直到所有这些都被invalidationContext(forPreferredLayoutAttributes:withOriginalAttributes)
覆盖
在初始加载时,这对我来说似乎工作正常。但是,在调用collectionView.performBatchUpdates
驱动的更改中,我要么看到prepare
中设置的估计大小的单元格闪烁,要么有时会结束(如果我试图用初始设置动画它们大小)。
我按照流程进行操作,我看到属性通过失效流程正确提供。 prepare
被多次调用(包括在通过首选属性失效正确设置属性之后)。这似乎会影响正确的大小,至少是暂时的,从而导致动画故障(或错误的最终布局)。
我能找到的唯一可行的解决方案是on the interwebs,其中调用了performBatchUpdates
,跳过尝试使用首选属性方法,只需在prepare
方法内调用UICV 上的委托方法在该步骤获得正确的尺寸,但这似乎与提供的工具背道而驰。
也许是known issue
仅供参考,与几个集合视图工程师交谈,这似乎是一个错误。他们建议使用参考单元进行手动调整大小的解决方法。
【问题讨论】:
“他们建议使用参考单元进行手动调整大小的解决方法。”这是什么意思? 【参考方案1】:collectionview 中的浮动标题也有类似的问题。它可能有助于检查:UICollectionView sticky header disappears for while after inserting section when collection is overscrolled (bounce effect)
【讨论】:
以上是关于UICollectionView 自定义布局动画故障,在 performBatchUpdates 上具有自我调整单元格大小的主要内容,如果未能解决你的问题,请参考以下文章
如何更改自定义 UICollectionView 布局引擎中的默认布局动画曲线?
UICollectionView 自定义布局动画故障,在 performBatchUpdates 上具有自我调整单元格大小
使用自定义布局重新加载 UICollectionView 会引发错误