【问题标题】:How do I manage background images for the iPhone 5?如何管理 iPhone 5 的背景图像?
【发布时间】:2012-09-18 20:10:32
【问题描述】:

我的一些应用程序使用自定义图像作为背景。检查屏幕尺寸以放置正确图像的正确方法是什么?

在 viewDidLoad 中应该是这样的:

if ([UIScreen mainScreen] == 2.0)
{
     UIImage * backgroundImage = [UIImage imageNamed:@"bgimage-568h@2x.png"];
     backgroundImageView = [[UIImageView alloc] initWithImage:backgroundImage]];
}
else
{
    UIImage * backgroundImage = [UIImage imageNamed:@"bgimage.png"];
    backgroundImageView = [[UIImageView alloc] iniWithImage:backgroundImage]];
}

非常感谢任何提示/建议!

谢谢!

【问题讨论】:

    标签: objective-c uiimageview uiimage ios6 iphone-5


    【解决方案1】:

    以下代码检查屏幕的大小/边界。如果屏幕是 586 点(请记住,由于 Retina,屏幕以点为单位),那么我们就知道它是新的 4 英寸 Retina 显示屏。

    if ([[UIScreen mainScreen] bounds].size.height == 568)
    {
       UIImage * backgroundImage = [UIImage imageNamed:@"bgimage-568h@2x.png"];
       backgroundImageView = [[UIImageView alloc] initWithImage:backgroundImage];
    }
    else
    {
       UIImage * backgroundImage = [UIImage imageNamed:@"bgimage.png"];
       backgroundImageView = [[UIImageView alloc] initWithImage:backgroundImage];
    }
    

    另见iOS 6 apps - how to deal with iPhone 5 screen size?

    【讨论】:

    • 您可以从图像文件名中删除“@2x”和 .png 文本,这样就可以了。将“@2x”放在那里通常不是一个好主意,因为这是由 imageNamed 在后台处理的:无论如何
    • 这会去哪里? “-viewdidLoad”
    • 是的。代码基本上是卢克在原始问题中提出的内容,他要求在viewDidLoad:
    【解决方案2】:

    上面布莱恩的回答对我有用,除了我必须使用

    [self.bgImageView setImage:backgroundImage];
    

    而不是

    backgroundImageView = [[UIImageView alloc] initWithImage:backgroundImage];
    

    只有当我使用前者时才会显示正确的图像。

    【讨论】:

    • backgroundImageView 只是说明如何编写 if 语句的名称。这是卢克提出的问题。不是您希望在自己的程序中找到的东西。同样,bgImageView 只是您程序中的一个名称,除非他们碰巧选择了相同的名称,否则对其他人不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多