UIViewController为加载的所有单元调用sizeForItemAtIndexPath

时间:2015-02-22 17:59:50

标签: ios uicollectionview uicollectionviewcell uicollectionviewlayout uicollectionviewdelegate

我有一个带UICollectionViewFlowLayout的UICollectionView。在使用大数据(5,000+单元格)进行测试时,我注意到加载时存在延迟。我发现加载时sizeForItemAtIndexPath被称为每个单元格。由于我正在进行类似应用程序的消息传递,并且每个单元格的高度不同,因此会导致高度估计。我没有滚动到底部或任何东西,只是加载视图。

我已经制作了一个小应用程序来演示我在说什么(查看控制台,看它正在为所有单元格调用sizeForItemAtIndexPathhttps://github.com/ftheo/CollectionViewLoadingBug

任何帮助将不胜感激。感谢

2 个答案:

答案 0 :(得分:3)

也许没有办法阻止调用sizeForItemAtIndexPath方法......

这是计算滚动内容视图大小的常规设计。

答案 1 :(得分:1)

The collection view needs to know what size it's contents have, hence it calls -sizeForItemAtIndexPath:. There is no way around this.

Consider using a UITableView instead. It offers a method -tableView:estimatedHeightForRowAtIndexPath: where you give it a rough guess for offscreen cells.