gpt4 book ai didi

ios - 如何使用自定义单元格大小提高 UICollectionView 的性能?

转载 作者:可可西里 更新时间:2023-11-01 03:58:18 25 4
gpt4 key购买 nike

当用户输入时,我通过在后台线程中遍历本地词图来检索结果(文本)。每次击键都会取消之前的操作。如果操作完成,则更新数据源并在主线程上调用 reloadData。这非常有效并且速度非常快(与用户输入的速度一样快),即使返回数万个结果也是如此。

为了自定义每个 Collection View 单元格的大小,我为 UICollectionViewDelegateFlowLayout 委托(delegate)实现了 sizeForItemAtIndexPath。不幸的是,这会导致用户键入时出现微小但明显的延迟。为了确保时间不会在我的尺寸计算逻辑中丢失,我尝试只返回一个固定尺寸,但它仍然会降低性能。我对此感到惊讶,因为在任何给定时间屏幕上只有大约 120 个单元格。注释掉此方法时,响应时间再次立即,即使对于非常大的数据集也是如此。

关于使用自定义单元格大小提高 UICollectionView 性能的任何想法?

谢谢

补充说明...

程序从给定的字母集中返回所有可能的单词,然后按分数或字母顺序等排序。随着用户键入,总单词数快速增加(如果输入多个通配符,则呈指数增长)。文字会随着您的键入而变化,因此单元格的宽度会相应更新并换行到下一行,这由流式布局处理。

问题似乎是在任何给定时间屏幕上显示的单元格数量。在 sizeForItemAtIndexPath 中,如果我只是返回一个大尺寸,其中只有一个或两个单元格可见,则更新非常快;但是,如果我返回一个刚好适合文本的大小,我最终会得到 100 多个可见单元格并且存在滞后。如果我注释掉 sizeForItemAtIndexPath 并只使用固定大小的单元格,它会很快,但这不是我想要的。

最佳答案

您不需要通过调用 reloadData 来重新加载 UICollectionView,您可以使用:

[self.collectionView reloadItemsAtIndexPaths:[NSArray arrayWithObject:indexPath]];

这里,indexPath是对应UICollectionViewCell对象的NSIndexPath对象您要更新的内容。

关于ios - 如何使用自定义单元格大小提高 UICollectionView 的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18446037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com