尽管 xcassets 中的每个项目都有一个 Contents.json 文件(见下文),其中包含该项目图像的文件名,但它似乎无法在文件系统级别访问。所有图像在编译时都放在一个文件系统文件夹中。json 文件是自动生成的,不应编辑,但它确实提供了一个解决方法的模板。
使用一致的后缀命名每个文件,以匹配出现在 json 文件中的相应成语、比例和子类型。这需要通过为每个资产选择“在 Finder 中显示”选项并重命名每个文件来进行手动工作,但是一旦完成,您就可以将 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"
}
}