以编程方式访问资产目录

Ril*_*eyE 91 xcode assets objective-c ios

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

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

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

我要求而不是自己测试的原因是,即使删除了我的资产和资产目录,然后清理了构建文件夹,我仍然可以在我的应用程序中访问我的资产.当我实现它时,这阻止我测试资产目录.

浏览资产目录后,我找到了每个资产的"Contents.json",其格式如下:

{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "idiom" : "universal",
      "scale" : "2x",
      "filename" : "my-asset@2x.png"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}
Run Code Online (Sandbox Code Playgroud)

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

Ril*_*eyE 130

要从资产目录访问图像,您只需访问资产组的名称而无需任何扩展名.

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

现在,您所要做的就是访问图像,如下所示:

// Objective-C
[UIImage imageNamed:@"my-button"];
// Swift
UIImage(named: "my-button")
Run Code Online (Sandbox Code Playgroud)

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

为了合并不同设备尺寸的图像,您可能需要在资产目录组选项的"设备"子标题下进行切换.以下是切换的示例(通过右键单击组可用).


Yig*_*maz 19

Apple还增加了使用Swift 3从资产中获取图像的新方法,它称之为"Image Literal",其工作方式如下:

Image Literal


Sur*_*gch 5

迅速

您可以使用以下命令获取对资产类别中图像的引用

UIImage(named: "myImageName")
Run Code Online (Sandbox Code Playgroud)

您不需要包含扩展名。