UICollectionView为大规模集合视图中的每个部分调用高度

时间:2015-06-29 11:29:49

标签: ios objective-c swift uicollectionview uicollectionviewlayout

我有一个UICollectionView,使用UICollectionViewFlowLayout作为其布局。它由核心数据查询的结果数组支持,并且在那里有10000项样本数据,以测试它在这种情况下的性能。每个项目都有自己的部分,允许我将标题附加到顶部,未来版本中的某些项目将在其部分中需要其他单元格,因此这是一个很好的设置。

我实现了以下UICollectionViewFlowDelegate和UICollectionViewDataSource函数:

func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell
func collectionView(collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, atIndexPath indexPath: NSIndexPath) -> UICollectionReusableView
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForFooterInSection section: Int) -> CGSize

我的collectionview的设置如下:

let collectionViewLayout = UICollectionViewFlowLayout()

self.conversationCollectionView = UICollectionView(frame: CGRectZero, collectionViewLayout: collectionViewLayout)

然后我运行应用程序,在最初加载应用程序时,在执行insertSection时(当我希望添加一个新条目时)我注意到有几个延迟秒。所以我注销了对每个委托方法的调用。

应用启动后,它会针对10000个部分和项目中的每一个调用numberOfItemsInSectionsizeForItemAtIndexPathreferenceSizeForHeaderInSectionreferenceSizeForFooterInSection

在屏幕上的项目中,它还会调用cellForItemAtIndexPathviewForSupplementaryItemOfKind,这是我期望的。

然后我加入:

collectionViewLayout.estimatedItemSize = CGSize(width: 100, height: 100)
collectionViewLayout.itemSize = CGSize(width: 100, height: 100)
collectionViewLayout.headerReferenceSize = CGSizeZero
collectionViewLayout.footerReferenceSize = CGSizeZero

但这对所做的调用没有任何影响。

理想情况下,我想要的是能够给出估计的截面尺寸,然后只有当它们即将在屏幕上显示时才调用截面和单元高度函数。

0 个答案:

没有答案