iOS Colorwithpattern - 使用自定义iPhone5图像

时间:2012-10-11 20:01:15

标签: image uiview background ios6

对于我的应用程序的加载屏幕和启动画面,我用了两种不同的方法来适当地显示我的iPhone 3,iPhone 4和iPhone 5图像。

对于加载屏幕,只需在图片中添加-568h @ 2x即可支持iPhone5。

对于启动画面,我使用了一系列(if height ==)个案来检查UIScreen界限的高度,并将相应的图像提供给图像视图。在这里我很明显,-568h并不是普遍认为的iPhone 5图像。它仅适用于加载屏幕。

现在,在我的AppDelegate中,我正在设置背景图像。我的所有子视图都具有透明背景,因此它们应该显示在背景图像中。但是,我在这里设置背景图片最麻烦。

简单地传入“Background.png”将-568h @ 2x添加到文件名的末尾不起作用。它将进行非视网膜和3.5英寸视网膜显示,但不会用于4英寸显示器。

即:

self.window.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"Background.png"]];

如果我使用上面的代码片段,则使用iPhone4图片而不是iPhone5图片,这不是我想要的。

我开始尝试做与使用闪屏一样的事情。我有一堆if case:

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图片作为背景。我该怎么做?

1 个答案:

答案 0 :(得分:7)

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

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];