性能:UIImage 与 UIView

Posted

技术标签:

【中文标题】性能:UIImage 与 UIView【英文标题】:Performance: UIImage vs UIView 【发布时间】:2017-05-31 10:28:54 【问题描述】:

纯粹出于兴趣:

一方面使用 25x25 像素、正方形、一种颜色、png 的UIImage 或使用相同大小和颜色的UIView 之间有什么区别,特别是在(理论上)性能或内存使用方面?

考虑Mail.app 中的未读项目符号。你会为此使用图像吗?还是带有圆边的UIView

图像占用更多空间,并且驻留在UIImageview 中,并且具有分辨率依赖性,但另一方面,一旦加载,它不会有太大的不同,不是吗?

【问题讨论】:

我会选择 UIView 而不是 UIImage。加载图像总是比 UIView 更昂贵。我在加载 40x40 像素图标时遇到过这样的情况,它不知何故占用了 4MB 大小(由于设计者的错误),并且极大地占用了应用程序的内存。 【参考方案1】:

如果您使用UIImageView,则它需要图像。如果你使用UIView,你不需要图像,所以它使你的应用程序light weight。第二件事,大图像需要更多memory to load。因此,尽可能使用UIView 而不是image 总是有益的!它使您的应用程序重量轻,并且可以提供更好的性能!

【讨论】:

【参考方案2】:

UIImageViewUIView 的子类,它将使用 UIKit 开发人员构建的所有扩展来实例化常规视图,以支持在普通 UIView 中显示图像。通过这样做,您只是创建了标准 UIView 的扩展(也可能是更重)版本。

也就是说,对简单的 UI 元素(如 Mail.app 的子弹图标)使用 UIView 也会让您忘记图形资源的分辨率,因为您不必关心 @2x 或 @3x分辨率也会导致项目规模更小

当然,对于简单的形状,您只会节省千字节,但从长远来看,在整个应用程序中重复使用这种模式将使您受益匪浅。

【讨论】:

以上是关于性能:UIImage 与 UIView的主要内容,如果未能解决你的问题,请参考以下文章

UIImage + NSCache 与 [UIImage imageNamed:]

使用 UIImage imageNamed 方法渲染图块的性能问题

iOS Swift UIImage 调整大小影响性能的问题;调整大小时出现意外尺寸[重复]

iOS性能优化之图片最佳实践

UIImage加载方式

UIimage与UIimageView