自定义UICollectionViewLayout多次调用layoutAttributesForElementsInRect

时间:2014-03-24 12:08:26

标签: ios7 ios6 uiscrollview uicollectionview uicollectionviewlayout

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

如果您到达整个UICollectionView的正确或底部边框并且bounces已打开,则在iOS7上没有任何反应。但是,每当您将iOS6拖过UICollectionView大小时,bounds都会layoutAttributesForElementsInRect,则会多次调用方法lag。这会导致大量layoutAttributesForElementsInRect,因为在iOS6内,布局会枚举所有视图以获取应显示的视图。

有人知道{{1}}

导致此问题的原因

1 个答案:

答案 0 :(得分:0)

在prepareLayout中缓存布局属性。循环遍历它们并查看在layoutAttributesForElementsInRect中相交的内容。在layoutAttributesForElementsInRect中创建一个断点,并确保它的UIKit代码触发调用。如果是您自己的代码触发此调用,请查看是否可以避免触发超过必要的操作。在我的情况下,这种方法通常仅由UIKit用来确定如何布置屏幕上的单元格。