我正在尝试从我正在编写的iOS 8框架(在Swift中)加载图像。我正在使用Xcode 6 Beta 6
如果图像存储在我的框架中,则此代码不起作用(即加载图像)Images.xcassets:
Images.xcassets
let image = UIImage(named: "Background.png")
如果映像存储在Images.xcassets主机应用程序(使用框架)中,则将正确加载映像(从框架内的代码)。
我可以看到Images.xcassets该Copy Bundle Resources阶段包含了框架。
Copy Bundle Resources
我还将故事板文件用作框架中的资源。并正确加载。
我尝试重命名框架的Images.xcassets以避免与主机应用程序发生某种命名冲突,但这也不起作用。
虽然@Renatus答案是完全有效的,并且可以解决核心问题(需要指定框架的捆绑包),但我想发布我所使用的解决方案,因为它更加直接:
斯威夫特3.0 / 4.0 / 5.0
let image = UIImage(named: "YourImage", in: Bundle(for: YOURFRAMEWORKCLASS.self), compatibleWith: nil)
或者,您可以将此模式用于非class(也称为非“静态”)功能:
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)
这些替代方法更适合剪切和粘贴。