3

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

我的想法是将图像视图与图像一起放入背景中,并且其顶部的所有其他视图都将使用 clearColor 作为背景;因此,背景图像将始终可见。问题是图像不能失真;所以,我实际上在不同的屏幕尺寸上显示了三个不同的图像。

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

有人可以让我开始使用上述想法或向我展示一种实现相同目标但更有效的方法吗?

4

3 回答 3

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@2x.png 用于代码中引用的 background-568h.png。没有意义,但这就是它的工作方式......:P

于 2012-11-17T15:59:30.123 回答
1

对于 480 像素 - ImageName.png

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

对于 1136px,请参考此链接

于 2012-11-17T12:21:33.183 回答
1

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

于 2012-11-17T13:00:51.957 回答