使用较少的图像用于非视网膜,视网膜和视网膜HD(@ 1x,@ 2x,@ 3x)用于通用应用

时间:2014-12-11 19:57:09

标签: ios xcode uiimageview universal

要在通用设备上支持iOS 7到8,我必须制作不同大小的同一图像的4份副本。

对于iPhone image@2x.png(iphone 4s,5,5s,6) image@3x.png(iphone 6 +)

适用于iPad image.png(ipad 2,ipad mini 1) image@2x.png(ipad 3,4,ipad mini 2,ipad Air)

图片真的让应用程序大小膨胀。

是否可以使用1个图像尺寸,最大的一个和缩放以适应uiimageview并使用图像视图缩小较小屏幕上的图像?

imageView.contentMode = UIViewContentModeScaleAspectFit;

或者是否绝对有必要以不同的尺寸制作所有4份副本?

它适用于模拟器和视网膜iPad 3上的所有设备,但我无法在其他设备上进行实际测试,并担心图像可能无法显示。

有没有人尝试使用1张大图片而不是副本?

1 个答案:

答案 0 :(得分:5)

是的,理论上你可以使用最大分辨率的图像,让UIImageView使用模式Aspect Fit缩小图像。

唯一的缺点是不支持视网膜的旧手机性能也较差。例如,当在UITableView的单元格上使用图像并滚动时,设备必须加载大图像,然后缩小图像,同时滚动它,它会在旧的,较慢的设备上断断续续。

所以,也许只是在列表视图中使用多个图像(应该只是缩略图,无论如何都很小,或者只是在这里使用较小的图像),但不要担心留在屏幕上的大图像而不滚动

确保使用允许imageNamed:等缓存的方法在列表视图中加载图像。

只要您考虑缩小图像所涉及的性能损失,您就可以只使用最大的图像并将其缩小以适应。

顺便说一下,是的,我已经在App Store的真实应用程序中使用了这种技术。

我见过的另一种技术是包含低质量图像(1x或2x),如果在更高分辨率的设备(2x或3x)上运行,则会自动从网络下载高分辨率图像。也许对它很好,只能在wifi下载。