在iPhone5和iPhone4的xib中处理不同尺寸的图像?

时间:2012-10-05 20:40:37

标签: iphone ios uiimageview ios6 iphone-5

此前关于迁移到iPhone 5的帖子仅提及添加新尺寸的启动图像* 如果需要,也许可以使用AutoLayout。

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

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

1 个答案:

答案 0 :(得分:3)

Here's一个实际上会帮助您的链接。保存启动图像,如果您在文件名末尾添加“-568h@2x.png”,iOS不会自动选择正确的图像。 above link中提到了一些帮助您轻松完成工作的辅助方法。

我已经采用了上面提到的链接中的代码,这里是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修复。