UIImageView + UIImage vs CALayer + 内容效率
Posted
技术标签:
【中文标题】UIImageView + UIImage vs CALayer + 内容效率【英文标题】:UIImageView + UIImage vs CALayer + Content Efficiency 【发布时间】:2018-05-29 16:26:05 【问题描述】:目前,我有一个UIImageView
,每隔几秒左右更新一次UIImage
。在非常繁重的 UI 中,这是一个没完没了的过程。
考虑到尽可能使用CALayers
而不是UIView
的重量总是更轻,我想知道我是否将UIImageView
转换为CALayer
并将UIImage
设置为CALayer
的设置内容?
当前
//Every 2 seconds
myImageView.image = UIImage(cgImage: myCGImage)
建议
//Every 2 seconds
myLayer.content = myCGImage
由于UIImageView
的行为略有不同,我想知道哪种方法对 CPU/GPU 的整体效率更高。
【问题讨论】:
我会质疑你的前提。图像视图是 CALayer。渲染树由层组成。那你指的是什么区别?如果您遇到性能问题,请使用 Instruments 进行测量。如果没有,请继续。 【参考方案1】:一般来说,UIView
对象是对CALayers
的相当薄的包装。 UIImageView
也不例外。在这两种情况下,解码和显示图像的大部分“繁重工作”都是由CALayer
完成的,所以我怀疑您是否会看到很大的不同。
UIImageView
更易于使用,生成的代码更易于阅读,所以除非你需要做一些需要你使用CALayers
的事情,否则我会坚持使用UIKit
对象。
【讨论】:
但正如 Matt 在评论中所说,如果您需要进行性能优化,请使用 Instruments 来识别瓶颈。以上是关于UIImageView + UIImage vs CALayer + 内容效率的主要内容,如果未能解决你的问题,请参考以下文章