5

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

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

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

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

现在我有近 60 张图片只用于一个屏幕,并且该应用程序已经重约 40MB!不用说这是不可接受的。

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

谢谢你。

4

2 回答 2

3

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

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

于 2013-07-15T08:03:44.147 回答
2

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

  1. 它需要计算时间
  2. 源“大图像”应至少打开一次以进行计算,如果您已经内存不足,这可能是一个问题

GUI(不仅是)元素还有另一种解决方案,使用 PDF vect 图像。你可以在这里找到 Matt Gemmel
的一篇有趣的文章 如果你的图像没有使用 alpha 通道,请使用 jpg!!!!

于 2013-07-15T05:51:59.280 回答