由于图片太多,应用尺寸太大

我正在创build一个通用应用程序。 对于一个屏幕,我使用此控件在网格中显示6个图像(PNG格式)。 此外,此屏幕支持纵向和横向。

我已经为所有iDevices创build了一组不同分辨率的图像,并使用正确的命名约定来命名它们,如下所示。

  • 名〜iphone.png
  • name@2x~iphone.png
  • 名〜ipad.png
  • name@2x~ipad.png
  • name-568h@2x~iphone.png(iPhone 5)

而且我不得不创build另外一组这样的图像,因为我支持这两个方向,而且我不能使用与上面相同的图像,因为在风景中它会拉伸。

现在我已经接近60个图像,只有一个屏幕,应用程序已经重达〜40MB! 不言而喻这是不可接受的。

我的问题是,是否有必要为所有这些尺寸/设备和方向创build单独的图像? 我不能只为视网膜显示创build一个设置,它会缩小正常显示? 如果这是不可能的,有没有办法缩小图像的大小?

谢谢。

不是笨拙的,但是你应该做,或者至less与其他因素平衡。 如果你不这样做的主要问题涉及内存(RAM)问题,较大的图像占用大量的内存空间,分辨率较低的设备内存less于视网膜内存。 所以缩小不是最好的select。
一个可能的解决scheme是采取一个“大”的形象,可以调整其他人的大小。 要做到这一点,你需要使用核心graphics或ImageIO重绘图像,这个库可能是有用的NYXImagesKit 。 当然,付出的代价是:

  1. 它需要计算时间
  2. 来源“大影像”至less应该打开一次来做计算,如果你已经记忆不清,那可能是一个问题

还有另外一种GUI(不仅)元素的解决scheme,使用PDFvector图像。 你可以在这里find一篇有趣的文章Matt Gemmel
如果你的图像不使用alpha通道去与JPG!

无需为非视网膜和视网膜显示创build图像。 您只能使用“视网膜图像”(如果可能的话,以JPG格式)。 当您需要显示较小尺寸的图像时,可以使用“纵横比”来缩小较大的图像。 可能有一些质量权衡。

同样,对于iPhone 5图像,您可以使用clipsToBounds属性剪切较长的图像,以在较小的屏幕中剪掉不需要的部分。