自定义UICollectionViewLayout多次调用layoutAttributesForElementsInRect

自定义UICollectionViewLayout多次调用layoutAttributesForElementsInRect

问题描述:

我创建了一个自定义UICollectionViewLayout,它创建了一个二维网格。滚动水平蚂蚁垂直工作正常。如果您在不同的OS上进行测试,则会出现问题。自定义UICollectionViewLayout多次调用layoutAttributesForElementsInRect

如果您到达整个UICollectionViewbounces的右边界或下边界,iOS7上没有任何反应。但是,如果每次将UICollectionView拖动到bounds的大小上时,它会到达iOS6,方法layoutAttributesForElementsInRect将被调用多次。这会导致大量的lag,因为在layoutAttributesForElementsInRect里布局会枚举所有视图以获取应该显示的视图。

是否有人知道什么是对iOS6

缓存prepareLayout布局属性导致此问题。循环浏览它们并查看layoutAttributesForElementsInRect中的相交点。在layoutAttributesForElementsInRect中创建断点并确保其UIKit代码触发该调用。如果它是您自己的代码触发此调用,请参阅是否可以避免超过必要的触发。在我的情况下,这种方法通常仅由UIKit使用来确定如何布局屏幕上的单元格。