在工程里拖入login@2x login@3x俩张图片,然后使用如下代码:
NSString *path = [[NSBundle mainBundle]pathForResource:@"login@2x" ofType:@"png"]; BGimageView.image = [UIImage imageWithContentsOfFile:path];
来获取对应的图片是没有问题的。
看到 Apple的开发文档说明 imageWithContentsOfFile:
是可以自动区分@2x @3x 的图片的,所以我就试试吧。
NSString *path = [[NSBundle mainBundle]pathForResource:@"login" ofType:@"png"]; BGimageView.image = [UIImage imageWithContentsOfFile:path];
奇怪的事出现了、这么写并没有获取到图片,返回的path打印的结果为空。于是我就怀疑imageWithContentsOfFile
能区分@2x @3x是不是真的。再次仔细查看文档我又看到了这么一句话
The full or partial path to the file.
`完整或部分链接`
是不是我获取的path有问题呢?然后我用NSString *path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"login.png"];BGimageView.image = [UIImage imageWithContentsOfFile:path];
试了一下果然获取到了图片,真是皇天不负有心人。
理解下NSString *path = [[NSBundle mainBundle]pathForResource:@"login" ofType:@"png"];
是获取到的是具体的某一个文件@2x就是@2x,@3x就是@3x,而Login就是login,所以用login来获取图片的地址因为根本就不存在login这个图片,而NSString *path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"login.png"];
获取到的是类似文件的相对路径(这么理解)具体这里面的@2x、@3x就是imageWithContentsOfFile:
自动来匹配了。