切换背景图像iphone5 - iphone4

Jim*_*mmy 7 iphone cocoa-touch objective-c ios

在我的FirstViewController我,如果设备是iPhone4的或iPhone5的写开关背景下面的代码:

文件名:bg-for5-568@2x.png
bg-for4@2x.png
bg-for4.png

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIImage *backgroundImage = [[UIImage alloc] init];
    if([[UIScreen mainScreen]bounds].size.height == 568)
    {
       backgroundImage = [UIImage imageNamed:@"bg-for5-568h"];
    }
    else
   {
       backgroundImage = [UIImage imageNamed:@"bg-for4"];
   }
   self.view.backgroundColor = [[[UIColor alloc] initWithPatternImage:backgroundImage] autorelease];
   [backgroundImage release];
}
Run Code Online (Sandbox Code Playgroud)

当我在我的模拟器上隐藏应用程序时,iphone5的背景显示双倍大小,在视图之外.

/*谢谢你*/

Mic*_*chs 5

我不确定这是否是这个问题的解决方案因为我缺少一些信息,但是:

首先:.png从你的imageNamed:方法剥离.从iOS4开始,你不应再这样做了.接下来是:你的形象名称是什么?请注意,iPhone5有一个视网膜显示器,您的图像应该被命名,bg-for5-568h@2x.png但在源代码中被称为bg-for5-568h.

除此之外:几乎在你的图像不是照片的每一种情况下,你正在做的是一个坏主意.即使它是一张照片,也只需使用iPhone 4和4S的更大图像.它不是那么大,所以内存占用不是问题!看看UIImageView我们的contentMode财产.您可以使用它来调整较大图像的位置.如果图像不是全屏,您还可能需要检查UIImageViews clipSubviews属性以剪切图像.

相信我,在我的公司,我们有一些钩子,比如~ipad,~iphone,~2x甚至可伸缩的图像.所有这些钩子工作正常,直到约会,苹果公布了类似的东西或简单的新设备.所以我决定不再做这种钩子了.它们在一开始似乎非常有用,但是当市场上出现新的东西时你遇到的麻烦是不值得的!