UIViewController 为加载的所有单元格调用 sizeForItemAtIndexPath
UIViewController calls sizeForItemAtIndexPath for all cells on load
我有一个带有 UICollectionViewFlowLayout 的 UICollectionView。在使用大数据(5,000 多个单元格)进行测试时,我注意到加载时存在延迟。我发现在加载 sizeForItemAtIndexPath
时,每个单元格都会被调用。由于我正在执行类似应用程序的消息传递,并且每个单元格的高度都不同,因此会导致进行高度估计。我没有滚动到底部或其他任何东西,只是加载视图。
我制作了一个小应用程序来演示我在说什么(查看控制台可以看到它正在为所有单元格调用 sizeForItemAtIndexPath
)https://github.com/ftheo/CollectionViewLoadingBug
如有任何帮助,我们将不胜感激。谢谢
也许没有办法阻止调用 sizeForItemAtIndexPath 方法...
这是计算滚动内容视图大小的正常设计。
集合视图需要知道其内容的大小,因此它调用 -sizeForItemAtIndexPath:
。没有办法解决这个问题。
考虑改用 UITableView
。它提供了一种方法
-tableView:estimatedHeightForRowAtIndexPath:
粗略猜测屏幕外的单元格。
我有一个带有 UICollectionViewFlowLayout 的 UICollectionView。在使用大数据(5,000 多个单元格)进行测试时,我注意到加载时存在延迟。我发现在加载 sizeForItemAtIndexPath
时,每个单元格都会被调用。由于我正在执行类似应用程序的消息传递,并且每个单元格的高度都不同,因此会导致进行高度估计。我没有滚动到底部或其他任何东西,只是加载视图。
我制作了一个小应用程序来演示我在说什么(查看控制台可以看到它正在为所有单元格调用 sizeForItemAtIndexPath
)https://github.com/ftheo/CollectionViewLoadingBug
如有任何帮助,我们将不胜感激。谢谢
也许没有办法阻止调用 sizeForItemAtIndexPath 方法...
这是计算滚动内容视图大小的正常设计。
集合视图需要知道其内容的大小,因此它调用 -sizeForItemAtIndexPath:
。没有办法解决这个问题。
考虑改用 UITableView
。它提供了一种方法
-tableView:estimatedHeightForRowAtIndexPath:
粗略猜测屏幕外的单元格。