0

Profiler 显示 CFRunLoopRun 在 20 秒内被调用超过 1000 次,占 85%,而我所做的只是滚动。UITableView 滚动似乎滞后,我不知道是什么导致了问题并专门调用 CFRunLoopRun。我有一个带有自定义单元格的 UITableView,它显示图像和一些标签。图像是在后台线程上加载的 dispatch_async(dispatch_get_global_queue,..) 所以我认为这不是造成它的原因。imageView 有圆角和边框,标签也有圆角和背景色。我很抱歉这么不具体,但有人遇到过类似的事情吗?

编辑1:

又看了一遍,发现CA Render、Layout、ImageProvider占据了大部分。这是调用树的图片 在此处输入图像描述

编辑2:

我发现设置 imageView 图像会调用上面的方法。如果我在设置图像的地方注释这一行代码,一切正常。我现在的问题是:为什么这么慢?我读过一些评论,我必须先在后台压缩图像,所以 UIImageView 不必在主线程上完成这项工作,但我想不出一个好的解决方案

4

1 回答 1

0

优化图像视图性能 Apple 文档说图像视图会缩放图像,这在性能方面可能会很昂贵。

用户可以将图像保存到数据库中。设置和获取不会减慢任何速度。我的问题是图像视图必须在主线程上缩放图像,这会降低性能。在设置图像之前,我必须在后台线程上对其进行缩放,这样图像视图就不必做太多工作。这对我有帮助:iOS Swift: Resize image to 200x200pt/px

我希望我能拯救每个有同样问题的人一段时间。

于 2016-03-04T18:12:46.580 回答