tvOS:资产在界面生成器中使用时有效,但不能以编程方式使用

tvOS: asset works when used in interface builder, but not programmatically

所以我 运行 遇到了一个奇怪的问题。我正在添加到另一个开发人员启动的现有项目中,该项目已经拥有运行良好的资产。

我添加了一些新的图像资产,当我在界面构建器中按名称引用它们时(放置 UIImageView 时)它们工​​作得很好,但是当我尝试创建 UIImage同名,总是 returns nil.

let myImage = UIImage(named: "my-image-name") // Always returns nil

我已经确保它有正确的目标,我没有错别字等,但它似乎不起作用。对于一些额外的信息,这是在我正在更改的本地开发 pod 中。

资产是在您的主应用程序包中,还是在另一方面,在您最后提到的本地开发 pods 中?

如您在 UIImage 文档中所见:https://developer.apple.com/reference/uikit/uiimage/1624154-init

UIImage 初始化程序有第二个参数 in 来指示实际定义资产的包,将主应用程序包作为默认值。

这意味着如果您的资产 "my-image-name" 未在主捆绑包中定义,则将找不到它。

如果您尝试从定义的同一个包中加载资产,您可以使用以下代码加载它:

let image = UIImage(named: "my-image-name", in: Bundle(for: self))

另一方面,如果您尝试从不同的捆绑包加载资产,则必须指明捆绑包。

let image = UIImage(named: "my-image-name", in: Bundle(forClass: CLASSINYOURLOCALFRAMEWORK.self))