3

上一篇关于迁移到 iPhone 5 的帖子只提到添加一个新大小的启动图像*,如果需要,可能会使用 AutoLayout。

但是我有一些 xib,其中有一个背景图像,它填满了整个屏幕(可能是导航和标签栏,具体取决于视图)。为了支持 iPhone 5,我现在需要针对不同屏幕尺寸的不同图像,这在 xib 或其他地方是如何处理的?

(*顺便说一句,如果应用程序不使用启动图像,你会怎么做?)

4

1 回答 1

3

这是一个真正可以帮助您的链接。保存启动图像,如果您在文件名末尾输入“-568h@2x.png”,iOS 不会自动选择正确的图像。上面的链接中提到了几个帮助方法,可以让您的工作变得轻松。

我已经采用了上面提到的链接中的代码,这是 Obj-C 的辅助函数:

-(BOOL) IsTall
{
    return ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) && ([[UIScreen mainScreen] bounds].size.height * [[UIScreen mainScreen] scale] >= 1136);
}

一点类别写作也会有所帮助。

@interface NSString (Special)
-(NSString*)correctImageNameForiPhone5
@end

@implementation NSString (Special)
-(NSString*)correctImageNameForiPhone5
{
    if([self isTall])
            return -imageNameAppendedWith_-568h@2x.png_-; //Do the correct NSString magic here
    else
            return -originalImageName-;
}
@end

最后,当您访问 UIImage 对象时:

NSString *filename = @"backgroundImage.png";
UIImage *img = [UIImage imageNamed:[filename correctImageNameForiPhone5]];

这里的假设是您的所有 iPhone5 特定图像文件名都以“-568h@2x”结尾。如果你只是把它放到你的项目中,这个代码示例肯定是行不通的,但你明白了。它需要一些 NSString 修复。

于 2012-10-05T21:17:23.490 回答