尽管在xcassets中有一个与每个项目相关联的Contents.json文件(见下文),其中包含该项目图像的文件名,但是在文件系统级别上似乎无法访问该文件。编译时,所有映像都放在单个文件系统文件夹中。json文件是自动生成的,不应对其进行编辑,但它确实提供了解决方法的模板。
用一致的后缀命名每个文件,以匹配json文件中出现的相应惯用法,小数位数和子类型。这需要通过为每个资产选择“在查找器中显示”选项并重命名每个文件来进行手动操作,但是一旦完成,您就可以将pathForResource与功能结合使用,以将适当的后缀添加到基本资产名称中,以检索适当的-尺寸的图像。
检索路径的示例代码:
NSString *imageName = @"Add to Cart";
NSString *imageSuffix = [self someMethodThatDeterminesSuffix]; // Example: "-iphone-2x-retina4"
NSString *imagePath = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%@%@", imageName, imageSuffix] ofType:@"png"];
“添加到购物车”图像资产的示例Contents.json文件:
{
"images" : [
{
"idiom" : "iphone",
"scale" : "1x",
"filename" : "Add to Cart-iphone-1x.png"
},
{
"idiom" : "iphone",
"scale" : "2x",
"filename" : "Add to Cart-iphone-2x.png"
},
{
"idiom" : "iphone",
"filename" : "Add to Cart-iphone-2x-retina4.png",
"subtype" : "retina4",
"scale" : "2x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}