在iPhone5与iPhone4的xib中处理不同大小的图像?

3
在这里关于迁移到iPhone 5的帖子中,只提到添加新的启动图像大小和可能需要使用AutoLayout。但是我有一些xib文件,其中有一个填满整个屏幕的背景图像(根据视图可能减去导航和选项卡栏)。为了支持iPhone 5,现在需要不同大小的图像,这在xib文件或其他地方如何处理?
(顺便问一下,如果应用程序不使用启动图像,该怎么办?)
1个回答

3
这是一篇关于IT技术的文章,这里有一条链接可以帮到您:点击这里。保存应用程序启动图像,因为iOS不会自动选择正确的图像,如果在文件名后面加上“-568h @ 2x.png”,上面的链接中提到了一些辅助方法,将极大地方便您的工作。
我采用了我上面提到的链接中的代码,并提供了一个Objective-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 的修正。

1
这是通过编程实现的,因此不能再使用带有背景的xib文件了吗? - Gruntcakes
如果iOS无法根据命名约定进行自动调整大小,我没有看到其他选择。虽然我很想知道是否有其他出路! - Ravi
有另一种处理更高图片的编程方式。https://github.com/gaj/imageNamed568 - UIBuilder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接