由于图像太多,应用程序大小太大

时间:2013-07-15 05:21:40

标签: ios screen-orientation image-scaling screen-size orientation-changes

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

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

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

我必须创建另一组这些图像,因为我支持两种方向,我不能使用与上面相同的图像,因为在景观中它会拉伸。

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

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

谢谢。

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

不是必须的,但你应该做或至少与其他因素保持平衡。如果不这样做,主要问题与内存(RAM)问题有关,较大的图像会占用大量内存,而分辨率较低的设备比视网膜内存的内存更少。所以萎缩不是最好的选择 一种可能的解决方案是采用一个“大”图像,也可以为其他图像调整大小。为此,您需要使用Core Graphics或ImageIO重绘图像,此库可能很有用NYXImagesKit。当然要付出代价:

  1. 需要计算时间
  2. 源“大图”应该至少打开一次才能进行计算,如果你已经内存不足则可能是个问题
  3. GUI(不仅仅是)元素有另一种解决方案,使用PDF vect图像。你可以找到一篇有趣的文章here by Matt Gemmel 如果你的图像没有使用alpha通道,请使用jpg !!!!