iOS Colorwithpattern - 使用自定义iPhone5图像

Mar*_*k S 6 background image uiview 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"]];
Run Code Online (Sandbox Code Playgroud)

如果我使用上面的代码片段,则使用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]];
Run Code Online (Sandbox Code Playgroud)

但是colorWithPatternImage函数认为selectedImage是1点= 1像素.所以我最终得到的非视网膜图片试图装入iPhone 5屏幕.它看起来有什么特别之处?看起来只有我想要的图像的左上象限显示在整个iPhone 5屏幕上.看起来没有应用视网膜缩放.

我需要让iPhone识别我有一个视网膜友好的iPhone 5图片作为背景.我该怎么做呢?

Mar*_*n R 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];
Run Code Online (Sandbox Code Playgroud)