ios - 以编程方式访问 Assets 目录

标签 ios objective-c xcode assets

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

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

Assets 目录似乎没有引用扩展名,所以如果没有“.png”,访问它会更有效吗?

我之所以要求而不是为自己进行测试是因为即使在删除了我的 Assets 和 Assets 目录,然后清理了构建文件夹之后,我仍然可以在我的应用程序中访问我的 Assets 。这使我无法在实现 Assets 目录时对其进行测试。

查看 Assets 目录后,我找到了每个 Assets 的“Contents.json”,其格式如下:

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

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

最佳答案

为了从 Assets 目录访问图像,您只需要访问 Assets 组的名称,无需任何扩展。

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

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

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

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

为了合并不同设备尺寸的图像,您可能需要在 Assets 目录组选项的“设备”子标题下切换它。 Here is an example of that toggle (available by right clicking the group).

关于ios - 以编程方式访问 Assets 目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17052344/

相关文章:

iphone - 如何选择 UITextField?

ios - NSDictionary 查找 keyPath

ios - Unwind segue 在 iOS9 中停止工作 > 卡住而没有崩溃

ios - HKHealthStore deleteObject 和 HKCorrelations

ios - 当 inputAccessoryView 出现时,将 Collection View 聊天向上移动

node.js - 以编程方式在 macOS 上创建虚拟显示

iphone - 处理大量 MKMapView 注释

objective-c - 核心数据 : DELETE WHERE

iOS:在 iPad 上创建 NavigationController 灯箱

ios - 我可以将两个按钮分配给 Xcode 7 中的同一个 Action 或 socket 吗?