当高分辨率版本(@ 2x)也出现时,我在iOS上强制加载某些资源的低分辨率版本时遇到了很多麻烦。
我想这样做的原因很简单:我的应用向用户显示一堆全屏图像(旧设备上为320x480,Retina设备上为640x960),用户可以将其中一些上传到TwitPic。我想将上传的图像统一为320x480,无论设备如何(为了保持一致性,因为在Web浏览器中这个尺寸很好)。
我发现无论我使用什么UIImage方法,当资源文件的高分辨率版本存在时,它都会加载(即使你传递完整的文件路径):UIImage会让你变得聪明。但我找到了一种超越智能UIImage的方法:
- (UIImage*) lowResImage{
NSString* path = [[NSBundle mainBundle] pathForResource:_fileName
ofType:@"png"
inDirectory:_resourceSubdirectory];
path = [path stringByReplacingOccurrencesOfString:@"@@2x" withString:@""];
NSData* imageData = [[NSData alloc] initWithContentsOfFile:path];
UIImage* image = [[UIImage alloc] initWithData:imageData];
[imageData release];
return [image autorelease];
}
以上代码适用于第4代iPod touch。
有人提出了更好的方法吗?
答案 0 :(得分:2)
构建路径,打开数据,然后使用数据初始化图像,如下例所示。
NSString *dataPath = [[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:_fileName];
NSData *data = [[NSData alloc] initWithContentsOfFile:dataPath];
UIImage *image3 = [UIImage imageWithData:data];