我知道以前也有人问过类似的问题,但我真的处于可怕的境地。
我正在构建一个想要在iPhone 3G、iPhone 4和iPhone 5上运行的应用程序。
我是 iOS 开发的初学者,直到现在,我已经编写了大量仅适用于 iPhone 模拟器的 UI 代码。我专注于通用语言和 SDK 功能,以了解通用 iOS 开发,因此几乎忽略了模拟器为我提供之外的任何分辨率支持。
现在,我面临着这些不同 iPhone 版本之间的便携性要求,我很困惑。首先让我谈谈我对 iPhone 3 和 iPhone 4 屏幕支持细节的了解,如果我做错了什么,请纠正我(暂时完全忽略 iPhone 5):
系统假定基于320x480 POINT的查看区域。在 iPhone 3 中,实际屏幕尺寸是相同的,但 iPhone 4 使用的是实际640x960 像素大小的屏幕。
我们根据320x480大小编码和生成视图。我们提供普通分辨率图像(例如 100x100 大小的 some_image.png)和带有“@2x”后缀的高分辨率版本。(200x200大小的 some_image@2x.png)都在同一个应用程序包中。
在调用
UIKit
图像加载方法时,例如UIImage
或UIImageView
系统会根据当前设备(iPhone 3 或 iPhone 4)选择正确版本的图像并加载它们。
到目前为止,为了支持低分辨率和高分辨率的iPhone 3G和iPhone 4 ,我还是谨慎地提供了这三个步骤。
假设我有一个尺寸为100x100的图像,我将在UIImage
对象中使用它。我也提供200x200高分辨率版本,我认为这适用于带有“@2x”后缀的 iPhone 4 和 iPhone 5。
但是假设我有一个覆盖整个背景的320x480大小的背景图像,并且我还提供了带有“@2x”后缀的640x960版本。
但是在大小为640x1136的 iPhone 5 屏幕上会发生什么呢?我应该准备一个 iPhone5 分辨率的图像并在有条件的情况下加载它if(IPHONE5 == true)
吗?
处理这个的正确方法是什么?