对于我的应用程序的加载屏幕和启动屏幕,我使用了两种不同的方法来正确显示我的 iPhone 3、iPhone 4 和 iPhone 5 图像。
对于加载屏幕,只需在图像中添加 -568h@2x 就足以支持 iPhone5。
对于闪屏,我使用了一系列(如果 height == )情况来检查 UIScreen 边界的高度,并将适当的图像来源到图像视图。对我来说,很明显 -568h 并未被普遍认为是 iPhone 5 图像。它仅适用于加载屏幕。
现在,在我的 AppDelegate 中,我正在设置背景图像。我的所有子视图都有透明背景,因此它们应该显示到背景图像。然而,我在这里设置背景图像时遇到了最大的麻烦。
简单地传入“Background.png”并将 -568h@2x 添加到文件名末尾是行不通的。它将支持非视网膜和 3.5 英寸视网膜显示屏,但不会支持 4 英寸显示屏。
ie:
self.window.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"Background.png"]];
如果我使用上面的代码片段,则会使用 iPhone 4 图片而不是 iPhone 5 图片,这不是我想要的。
我开始尝试做与闪屏相同的事情。我有很多 if 情况:
CGFloat height = [UIScreen mainScreen].currentMode.size.height;
if ( height == 1136 )
{
//Choose image here
}
else if (height == 960)
{
//Choose image here
}
else if (height == 480)
{
//Choose image here
}
self.window.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:chosenImage]];
但 colorWithPatternImage 函数认为选择的图像经过 1 点 = 1 像素。所以我最终得到了一张试图适应 iPhone 5 屏幕的非视网膜图片。它到底是什么样子的?看起来整个 iPhone 5 屏幕上只显示了我想要的图像的左上象限。看起来没有应用视网膜缩放。
我需要 iPhone 识别出我有一张适合视网膜的 iPhone 5 图片用作背景。我该怎么做呢?