6

对于我的应用程序的加载屏幕和启动屏幕,我使用了两种不同的方法来正确显示我的 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 图片用作背景。我该怎么做呢?

4

1 回答 1

7

我在这里找到了这段代码,也许它可以帮助你:

UIImage *tmpImage = [UIImage imageNamed:@"background-568h@2x.png"];
UIImage *backgroundImage = [UIImage imageWithCGImage:[tmpImage CGImage]
                                               scale:2.0
                                         orientation:UIImageOrientationUp];
self.window.backgroundColor = [UIColor colorWithPatternImage:backgroundImage];
于 2012-10-11T21:20:40.033 回答