我有一个显示 3 个图像、两个标签和 1 个属性字符串的 Collection View (字符串具有不同的颜色和字体大小,每个单元格的值不是唯一的)。其中一张图片来自网络,我使用 AFnetworking 进行下载和缓存。 Collection View 同时显示 15 个单元格。
当我滚动时,我只能达到 25 帧/秒。
下面是我做的事情: - 数据处理提前完成并缓存到对象 -图像和 View 是不透明的 -单元格和 View 被重用
我已经完成了所有我知道的优化,但我无法达到至少 55 帧/秒。
如果您可以分享其他技术来加速细胞的重用。
我什至考虑在屏幕外预渲染 subview 并将其缓存在某个地方,但我不确定它是如何完成的。
当我在 iPhone 上运行应用程序时,它很快,因为它一次只显示至少四个单元格。
最佳答案
您需要做的第一件事是启动仪器并确定您是否CPU 受限(计算或常规 I/O 是瓶颈)或GPU-bound(显卡正在苦苦挣扎)。 .根据其中哪一个是问题,解决方案会有所不同。
这是一个 video tutorial这显示了如何执行此操作(除其他外)。 .这个来自 Sean Woodhouse @ Itty Bitty Apps(他们制作了很好的 Reveal 工具)。
注意:在性能调整的上下文中,我们通常将 I/O 绑定(bind)或 CPU 绑定(bind)作为单独的问题来讨论,但是我在这里将它们组合在一起,意思是“由于计算速度慢或 I/O 数据未获取足够快的显卡”。 .如果这确实是问题所在,那么下一步就是找出它是否确实与等待 I/O 或 CPU 已用尽有关。
乐器一开始可能真的让人困惑,但上面的视频帮助我驾驭它的力量。
这是来自 Anthony Egerton 的另一个很棒的教程.
关于ios - UICollectionView 低帧率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20882426/