gpt4 book ai didi

ios - 滚动时将部分插入 UICollectionView 时出现性能问题

转载 作者:行者123 更新时间:2023-11-29 02:09:45 25 4
gpt4 key购买 nike

基本上我使用默认的 UICollectionViewFlowLayout。当我使用 insertSections 时,确实需要一些时间。特别是如果用户滚动,这会带来一些卡顿。我正在使用自动布局,我在自定义 UICollectionViewCell 上放置了一个标签。我正在使单元格和我的补充 View (标题)出列。这里没有什么特别的。

这是Time Profiler 的屏幕截图:

UICollectionViewFlowLayout prepareLayout

您在这里可以看到,UICollectionViewFlowLayoutprepareLayout 确实消耗了三分之一的可用 CPU 能力。有没有可能加快速度?例如。为 layoutAttributesForElementsInRect:layoutAttributesForItemAtIndexPath:collectionViewContentSizeprepareLayout 编写自定义方法?这种方法看起来如何?

我的其他观察:

添加的部分越频繁,performBatchUpdates 插入部分(大约 420 项)所需的时间就越长。我每次都添加相同数量的项目。我用 Instruments 做了一些测试。当卡顿发生时,CPU 使用率超过 100%。实际内存使用量在增加,但我以大约 60 MB 结束了测试。当时大约有 48.000 个单元格被加载到数据集中(大约 45 个始终显示在屏幕上)。一旦加载单元格,滚动就可以流畅地工作(CPU 最大约 100%,但只有很短的时间,用户不会注意到)。在另一项测试中,分配的总字节数约为 1.6 GB,但持久性仍然很低。如果插入新的部分,帧也会下降到 0。

我试图摆脱单元格的自动布局,为单元格使用不透明的背景颜色,为单元格使用 clip to bounds,使用 shouldRasterize 等等。单元格不重叠,不应使用分数值(四舍五入的宽度)。我根本不使用阴影。我也试着评论一下,看看有什么问题,但我认为这一定是必不可少的。我在模拟器以及不同的设备上进行了测试。

有人知道如何在插入部分时提高性能吗?

最佳答案

您的图像附件的调用树中有很多未解析的符号。您可以尝试缩小其中一个仅包含 MonthView 应用程序的调用树函数中的性能问题。

尝试检查 Hide System Libraries 并使用 Debug 作为构建配置,这样您就可以观察这些符号并导航到应用中的特定代码。

一旦您清楚您的 Collection View 数据源或委托(delegate)不会导致 UICollectionView 框架级别的性能问题,那么您可以努力寻找一种方法来最小化此类集合查看部分更新。

也许您的单元格自动布局配置相当复杂,您可以简化它吗?

虽然如果不实际查看您的 Collection View 单元格所具有的内容,则很难理解。

关于ios - 滚动时将部分插入 UICollectionView 时出现性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29416490/

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