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通常只使用这种方法来确定如何布置屏幕上的单元格