以编程方式访问资产目录

我知道这是一个新function,这可能是不可能的,但我希望能够使用资产目录来组织我的资产,但我以编程方式访问我的所有图像。 我现在如何访问我的图片? 我仍然可以通过它们的文件名访问它们:

[UIImage imageNamed:@"my-asset-name.png"];

资产目录看起来并没有引用扩展名,所以在不使用“.png”的情况下访问它会更有效率吗?

我所要求的而不是为自己testing的原因是,即使删除我的资产和资产目录,然后清理生成文件夹,我仍然可以访问我的应用程序中的资产。 这使我无法在执行资产目录时对其进行testing。

查看资产目录后,我发现每个资产的“Contents.json”,它的格式如下:

 { "images" : [ { "idiom" : "universal", "scale" : "1x" }, { "idiom" : "universal", "scale" : "2x", "filename" : "my-asset@2x.png" } ], "info" : { "version" : 1, "author" : "xcode" } } 

我仍然不确定我应该如何访问它,但也许这将有助于?

为了从资产目录访问图像,您只需要访问资产组的名称,而不需要任何扩展名。

因此,如果您将名为@"my-button@2x.png"的图像添加到资产目录,它将创build一个名为my-button的资产组。

现在,你所要做的就是像这样访问图像:

 // Objective-C [UIImage imageNamed:@"my-button"]; // Swift UIImage(named: "my-button") 

另外,您可以通过重命名(不重命名图像)或更改其单个组件来编辑资产组。 这将允许您遵循更简单的命名约定,并显示不同的UIScreen scale之间的完全不同的资产,而无需进行任何scale检查。

为了合并不同设备尺寸的图像,您可能需要将其切换到资产目录组选项中的“设备”子标题下。 下面是该切换的示例(通过右键单击该组可用)。

迅速

您可以使用资产分类日志中的图像

 UIImage(named: "myImageName") 

您不需要包含扩展名。

@RileyE是100%正确的。 但是,从我的经验值得注意的是,有时图像的资产目录参考可能包含尾随白色空间。 你可能不会注意到,如果使用故事板/ xibs作为自动完成将添加它。 但是当你从代码中引用它时,问题不是那么明显。