忽略iOS高分辨率@ 2x文件

时间:2011-05-17 23:17:34

标签: iphone objective-c

我有一个包含大量图片(1000+)的应用。我有一个数据库表,其中包含这些图像的所有文件名。使用UIImage* image = [UIImage imageNamed:...]

根据此文件名按需加载图像

由于图像数量很多,我想以编程方式进行测试,以确保数据库中包含的所有图像实际上都存在于项目中。为实现这一目标,我将从表中提取所有文件名,循环遍历每个文件名,运行上述代码,并检查是否image != nil。这很好用。

问题在于我想确认正常分辨率和高分辨率(@ 2x)图像都在那里。如果存在高分辨率文件但是普通分辨率文件不存在,我的代码将不会检测到这一点。

我是否有某种方法可以实现这一目标而无需运行此过程两次,每种分辨率类型一次?我可以强制SDK忽略@ 2x文件吗?

2 个答案:

答案 0 :(得分:6)

您应该使用NSFileManager。它可能会快得多,因为它实际上不会加载图像文件的内容。对于每个fileName,使用NSFileManager的{​​{1}}方法检查图像。然后,将“@ 2x”附加到基本名称以检查2x图像。

答案 1 :(得分:2)

我会使用NSBundle来定位文件,这样就不必将UIImage加载到内存中,你可以使用类似的东西......

NSBundle *myBundle = [NSBundle mainBundle];
if([myBundle pathForResource:@"MyImage" forType: @"png"] == nil){
    // low res image isn't there
}

if([myBundle pathForResource:@"MyImage@2x" forType: @"png"] == nil){
    // high res image isn't there
}

应该快得多......