虽然每个xcassets项目中都有一个Contents.json文件(见下文),其中包含该项目图像的文件名,但似乎无法在文件系统级别上访问它。所有图像在编译时都放置在单个文件系统文件夹中。json文件是自动生成的,不应进行编辑,但它提供了一个解决方法的模板。
为每个文件命名一个一致的后缀以匹配json文件中出现的相应语言环境、比例和子类型。这需要手动选择每个资源的“在Finder中显示”选项并重命名每个文件,但完成后,您可以使用pathForResource与函数结合使用,将适当的后缀添加到基本资源名称中,以检索适当大小的图像。
检索路径的示例代码:
NSString *imageName = @"Add to Cart";
NSString *imageSuffix = [self someMethodThatDeterminesSuffix];
NSString *imagePath = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%@%@", imageName, imageSuffix] ofType:@"png"];
“Add to Cart” 图像资产的示例 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"
}
}