性能: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】:UIImageView
是UIView
的子类,它将使用 UIKit 开发人员构建的所有扩展来实例化常规视图,以支持在普通 UIView 中显示图像。通过这样做,您只是创建了标准 UIView 的扩展(也可能是更重)版本。
也就是说,对简单的 UI 元素(如 Mail.app 的子弹图标)使用 UIView
也会让您忘记图形资源的分辨率,因为您不必关心 @2x 或 @3x分辨率也会导致项目规模更小。
当然,对于简单的形状,您只会节省千字节,但从长远来看,在整个应用程序中重复使用这种模式将使您受益匪浅。
【讨论】:
以上是关于性能:UIImage 与 UIView的主要内容,如果未能解决你的问题,请参考以下文章
UIImage + NSCache 与 [UIImage imageNamed:]
使用 UIImage imageNamed 方法渲染图块的性能问题