设置 UIImageView 图像后多次调用 CFRunLoopRun
CFRunLoopRun called multiple times after setting UIImageView image
Profiler 显示 CFRunLoopRun 在 20 秒内被调用超过 1000 次,占用了 85%,而我所做的只是滚动。 UITableView 滚动似乎很慢,我不知道是什么导致了问题并具体调用了 CFRunLoopRun。
我有一个带有显示图像和一些标签的自定义单元格的 UITableView。该图像是在 dispatch_async(dispatch_get_global_queue,..) 的后台线程上加载的,所以我认为这不是导致它的原因。 imageView 有圆角和边框,标签也有圆角和背景色。
很抱歉这么不具体,但有人 运行 喜欢类似的东西吗?
编辑 1:
又看了看,发现CA Render,Layout,ImageProvider占了大半。这是调用树的图片
编辑 2:
我发现设置imageView图片调用了上面的方法。如果我在设置图像的地方评论这一行代码,一切正常。
我现在的问题是:为什么这么慢?我读过一些评论说我必须先在后台压缩图像,这样 UIImageView 就不必在主线程上完成这项工作,但我想不出一个好的解决方案
Optimizing Image View Performance
苹果文档说图像视图缩放图像并且在性能方面可能很昂贵。
用户可以将图片保存到数据库中。设置和获取不会减慢任何速度。我的问题是图像视图必须在主线程上缩放图像,这会降低性能。在设置图像之前,我必须在后台线程上缩放它,这样图像视图就不必做太多工作。这对我有帮助:
希望能帮大家解决一下。
Profiler 显示 CFRunLoopRun 在 20 秒内被调用超过 1000 次,占用了 85%,而我所做的只是滚动。 UITableView 滚动似乎很慢,我不知道是什么导致了问题并具体调用了 CFRunLoopRun。 我有一个带有显示图像和一些标签的自定义单元格的 UITableView。该图像是在 dispatch_async(dispatch_get_global_queue,..) 的后台线程上加载的,所以我认为这不是导致它的原因。 imageView 有圆角和边框,标签也有圆角和背景色。 很抱歉这么不具体,但有人 运行 喜欢类似的东西吗?
编辑 1:
又看了看,发现CA Render,Layout,ImageProvider占了大半。这是调用树的图片
编辑 2:
我发现设置imageView图片调用了上面的方法。如果我在设置图像的地方评论这一行代码,一切正常。 我现在的问题是:为什么这么慢?我读过一些评论说我必须先在后台压缩图像,这样 UIImageView 就不必在主线程上完成这项工作,但我想不出一个好的解决方案
Optimizing Image View Performance 苹果文档说图像视图缩放图像并且在性能方面可能很昂贵。
用户可以将图片保存到数据库中。设置和获取不会减慢任何速度。我的问题是图像视图必须在主线程上缩放图像,这会降低性能。在设置图像之前,我必须在后台线程上缩放它,这样图像视图就不必做太多工作。这对我有帮助:
希望能帮大家解决一下。