Ios7 自定义UICollectionViewLayout多次调用LayoutAttributesForElementsRect

Ios7 自定义UICollectionViewLayout多次调用LayoutAttributesForElementsRect,ios7,ios6,uiscrollview,uicollectionview,uicollectionviewlayout,Ios7,Ios6,Uiscrollview,Uicollectionview,Uicollectionviewlayout,我创建了一个自定义的UICollectionViewLayout,它创建了一个二维网格。水平滚动和垂直滚动都很好。如果在不同的OS上测试它,就会出现问题 如果您到达整个UICollectionView的右边框或下边框,并且反弹处于打开状态,则iOS7将不会发生任何事情。但是,每当您将UICollectionView拖动到范围大小上时,当它到达iOS6时,将多次调用方法layouttributesforementsinrect。这会导致大量的延迟,因为在layouttributesforement

我创建了一个自定义的
UICollectionViewLayout
,它创建了一个二维网格。水平滚动和垂直滚动都很好。如果在不同的
OS
上测试它,就会出现问题

如果您到达整个
UICollectionView
的右边框或下边框,并且
反弹
处于打开状态,则
iOS7
将不会发生任何事情。但是,每当您将
UICollectionView
拖动到
范围
大小上时,当它到达
iOS6
时,将多次调用方法
layouttributesforementsinrect
。这会导致大量的
延迟
,因为在
layouttributesforementsinrect
内部,布局正在枚举所有视图以获取应显示的视图


有人知道是什么原因导致iOS6出现此问题吗?请将布局属性缓存在prepareLayout中。循环浏览它们并查看layoutAttributesForElementsInRect中的交叉点。在LayoutAttributesForelementsRect中创建一个断点,并确保它是触发调用的UIKit代码。如果是您自己的代码触发了此调用,请查看是否可以避免触发它。在我的例子中,UIKit通常只使用这种方法来确定如何布置屏幕上的单元格