对于我的应用程序的加载屏幕和启动屏幕,我使用了两种不同的方法来正确显示我的 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"]];
如果我使用上面的代码片段,则使用 iPhone4 图片而不是 iPhone5 图片,这不是我想要的。
我开始尝试做与启动画面相同的事情。我有一堆 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 函数认为 selectedImage 增加了 1 个点 = 1 个像素。所以我最终得到了一张非视网膜图片,试图适应 iPhone 5 的屏幕。它看起来像什么?看起来只有我想要的图像的左上象限显示在整个 iPhone 5 屏幕上。看起来没有应用视网膜缩放。
我需要 iPhone 识别出我有一张适合视网膜的 iPhone 5 图片用作背景。我该怎么做呢?