多个设备的iOS背景图片

时间:2012-11-17 12:12:54

标签: iphone objective-c ios uiimageview

我是一个业余爱好者的iOS开发者(实际上是一个初学者)。我目前正在制作一款iPhone应用程序,并试图定义一个适用于480,960和1136分辨率的通用背景图像。

我的想法是将imageview放入带有图像的背景中,其上的所有其他视图都将使用clearColor作为背景;因此,背景图像始终可见。问题是图像不会变形;所以,我实际上有三种不同的图像可以在各种屏幕尺寸上显示。

问题在于我真的不知道如何让这个概念发挥作用。我试图在互联网上搜索答案,但无济于事,这让我觉得可能有更好的方法来做到这一点。

有人可以让我从上述想法开始,或者告诉我一种方法来实现同样的目标,但更有效率?

3 个答案:

答案 0 :(得分:4)

好的,我相信我解决了它(在波纹管评论者的帮助下:)。这是我的代码似乎有效(虽然它可能不是最好的解决方案;所以,如果你有更好的方法,请告诉我):

UIImage *backgroundImage = [[UIImage alloc] init];
if ([UIScreen mainScreen].bounds.size.height > 480.0f) {
    backgroundImage = [UIImage imageNamed:@"background-568h.png"];
    }
else {
    backgroundImage = [UIImage imageNamed:@"background.png"];
    }

 self.window.backgroundColor = [UIColor colorWithPatternImage:backgroundImage];

一件重要的事情是:即使目前没有设备使用4英寸非视网膜显示器,当您参考代码中的图片然后包含视网膜版本时,您需要使用非视网膜版本较小的图像。因此需要在代码中为引用的background-568h.png设置background-568h@2x.png。没有意义,但这就是它的工作方式......:P

答案 1 :(得分:1)

适用于480px - ImageName.png

对于960px - ImageName@2x.png(它将自动作为视网膜显示的图像)。

对于1136px,请参阅此link

答案 2 :(得分:1)

为每种分辨率提供单独的图像是相当普遍和值得推荐的。但是,你的想法是可以理解的。我假设您的图形很好地适应各种设备的所有不同宽高比。如果是这样,那么只需创建一个具有您想要使用的最大分辨率的图像(我猜)。将此图像分配给您用于背景的UIImageView对象。以编程方式将内容模式设置为IB或UIViewContentModeScaleToFill中的“Scale to fill”。