一尘不染

从iOS 8框架加载图像

swift

我正在尝试从我正在编写的iOS 8框架(在Swift中)加载图像。我正在使用Xcode 6 Beta 6

如果图像存储在我的框架中,则此代码不起作用(即加载图像)Images.xcassets

let image = UIImage(named: "Background.png")

如果映像存储在Images.xcassets主机应用程序(使用框架)中,则将正确加载映像(从框架内的代码)。

我可以看到Images.xcassetsCopy Bundle Resources阶段包含了框架。

我还将故事板文件用作框架中的资源。并正确加载。

我尝试重命名框架的Images.xcassets以避免与主机应用程序发生某种命名冲突,但这也不起作用。


阅读 173

收藏
2020-07-07

共1个答案

一尘不染

虽然@Renatus答案是完全有效的,并且可以解决核心问题(需要指定框架的捆绑包),但我想发布我所使用的解决方案,因为它更加直接:

斯威夫特3.0 / 4.0 / 5.0

let image = UIImage(named: "YourImage", in: Bundle(for: YOURFRAMEWORKCLASS.self), compatibleWith: nil)

或者,您可以将此模式用于非class(也称为非“静态”)功能:

let image = UIImage(named: "YourImage", in: Bundle(for: type(of: self)), compatibleWith: nil)

或此class功能模式:

let image = UIImage(named: "YourImage", in: Bundle(for: self), compatibleWith: nil)

这些替代方法更适合剪切和粘贴。

2020-07-07