对于我的应用程序的加载屏幕和启动画面,我用了两种不同的方法来适当地显示我的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图片作为背景。我该怎么做?
答案 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];