根据理查德·特顿(Richard Turton)撰写的this one等精彩文章,通过自定义布局在uicollectionview中自我调整单元格的理解, 处理自我调整单元格的方法是通过
prepare
中的细胞/视图设置估计的大小,因为他们有机会使用真实的自动布局计算更新自己preferredLayoutAttributesFitting
,其中单元格计算首选属性(框架),invalidationContext(forPreferredLayoutAttributes:withOriginalAttributes)
在初始加载时,这似乎对我来说很好。但是,在通过调用collectionView.performBatchUpdates
驱动的更改中,我会看到prepare
中设置的估计大小的单元格闪现,或者有时会结束(如果我尝试用初始大小为它们制作动画。)
我遵循了流程,我看到通过失效流程正确提供了属性。虽然prepare
被多次调用(包括在通过首选属性失效正确设置属性之后)。这似乎踩到了正确的大小,至少是暂时的,导致动画故障(或最终布局不好)。
我唯一能够找到调用performBatchUpdates
on the interwebs的工作解决方案,跳过尝试使用首选属性方法并调用UICV上的委托方法在prepare
方法内部,以便在该步骤中获得正确的大小,但这似乎违背了工具。
也许是known issue
仅供参考,与几位收藏视图工程师交谈,这似乎是一个错误。他们建议使用参考单元手动调整大小。
答案 0 :(得分:0)
我对collectionview中的浮动标头有类似的问题。它可能有助于检查:UICollectionView sticky header disappears for while after inserting section when collection is overscrolled (bounce effect)