swift – 从iOS 8框架加载图像

swift – 从iOS 8框架加载图像,第1张

概述我正在尝试从我正在撰写的iOS 8框架加载一个图像(在Swift中)。我正在使用Xcode 6 Beta 6 如果图像存储在我的框架的Images.xcassets中,则此代码不起作用(即加载图像): let image = UIImage(named: "Background.png") 如果图像存储在主机应用程序(使用框架)的Images.x框架中,则图像将被正确加载(从框架内的代码)。 我 我正在尝试从我正在撰写的iOS 8框架中加载一个图像(在Swift中)。我正在使用Xcode 6 Beta 6

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

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

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

我可以看到框架的Images.xcassets包含在“复制包资源”阶段中。

我也在框架中使用storyboard文件作为资源;并正确加载。

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

虽然@Renatus答案是完全有效的,并解决了核心问题(框架需要指定的包),我想发布我去的解决方案,因为它稍微更直接:

Swift 3.0

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

Swift 2.2或2.3

let image = UIImage(named: "YourImage",inBundle: NSBundle(forClass: YOURFRAMEWORKCLASS.self),compatibleWithTraitCollection: nil)

或者,您可以将此模式用于非类,又称非“静态”函数:

Swift 3.0

let image = UIImage(named: "YourImage",inBundle: Bundle(for: type(of: self)),inBundle: NSBundle(forClass: self.dynamicType),compatibleWithTraitCollection: nil)

或这种模式的类功能:

Swift 3.0

let image = UIImage(named: "YourImage",in: Bundle(for: self),inBundle: NSBundle(forClass: self),compatibleWithTraitCollection: nil)

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

总结

以上是内存溢出为你收集整理的swift – 从iOS 8框架加载图像全部内容,希望文章能够帮你解决swift – 从iOS 8框架加载图像所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1052866.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存