随着 iPhone 5 的新屏幕分辨率和宽高比,在处理全屏(或大部分全屏)图像时,似乎有两种方法可以利用新的屏幕空间:
- 包括两个图像 bg@2x.png 和 bg-h568@2x.png 并检查设备的主屏幕边界以确定加载哪个。
- 仅包含一个文件,但使其成为 iPhone 5 的完整分辨率
(还有其他方法:拉伸、平铺和/或使用 Quartz 绘图。)
这两种选择都有缺点:
- 包含两个文件会增加应用程序的包大小
- 在 4 上加载 iPhone 5 的视网膜图像会在屏幕上显示图像数据时剪切图像数据,但仍会消耗相同数量的内存资源
我对更好地了解第二个缺点的细节特别感兴趣。
我认为如果我可以进一步使用这个整合图像的想法,它将保存应用程序包(和我的设计师)......
假设我有一张图像,纵向占用 320pt x 480pt,横向占用 480pt x 320pt(宽 x 高)。
(编辑:最初我没有考虑其他一些重要的花絮。为了完整起见,我在这里包括这些想法)
如果我们创建一个分辨率为 480pt x 480pt 的图像文件而不是横向和纵向文件,这将阻止应用程序包包含两个文件,每个文件都包含 320pt x 320pt 区域的重复图像数据。但是,这个大的方形图像将在角落中包含四个 80pt x 80pt 的象限,这些象限不会被看到。在所有条件相同的情况下,应用程序包中的图像数据仍应减少 20%。
重读比尔的“iBooks Author Experiment”,内存需求很容易弄清楚:
- 横向或纵向:
640 * 960 * 4 = 2,457,600
- 大广场:
960 * 960 * 4 = 3,686,400
加载大方块所需的内存比加载适合屏幕大小的图像多 50%。很明显,应用程序包中的节省无法与资源消耗相提并论!
但是,如何将其扩展到一个包含 iPhone 5 和 iPhone 4 - 568pt x 568pt 的巨大正方形?应用程序包中只有一个文件(巨型正方形),而不是四个文件(iP4 横向、iP4 纵向、iP5 横向、iP5 纵向)。可节省约 60%。
命中的资源呢?
- iPhone 5 横向或纵向:
1136 * 640 * 4 = 2,908,160
- 巨人广场:
1136 * 1136 * 4 = 5,161,984
iPhone 4 的内存增加了 110%,iPhone 5 的内存增加了 77.5%。
我最初的问题大致分为两个部分:1. 我是否正确理解这一点,以及 2. 这种权衡是否明智。
我希望我的编辑(受比尔回答的启发)表明我现在确实了解这些东西。而且,如果新发现的知识是正确的,那么#2 几乎可以回答自己。:-)