可可触摸框架资产在 App Project 中不可见
Posted
技术标签:
【中文标题】可可触摸框架资产在 App Project 中不可见【英文标题】:cocoa touch framework assets not visible in App Project 【发布时间】:2014-11-06 15:07:32 【问题描述】:我从早上开始就一直在尝试创建一个可可触摸农场,将我的自包含小部件放入其中,并允许我正在开发的任何应用程序在将来使用它。
我已成功构建项目并导出 .framework 文件,但所有资产现在都没有显示。我所有的图片都在资产目录中。
而且它们似乎已被导出,因为 .framework 文件中有 (assets.car) 文件。
我目前正在使用
访问它们UIImage* icon = [UIImage imageNamed:@"iconName"];
但它总是返回 null,有什么想法吗?
【问题讨论】:
据我所知,如果您有一个 .framework 文件并想使用资产,您需要构建一个捆绑包并使用 .framework 提供它 你看过Building Modern Frameworks吗? @Andrei 我也这样做了,资产类别也无法访问,我开始觉得教程中缺少一些东西,或者我的 SDK 不知何故坏了。我尝试使用其 ID 访问包含所述资产的 NSBundle,但结果为空。 @carlodurso 是的。我看过视频。并且演示者说资产中存在错误。 你使用什么 XCode 版本? 【参考方案1】:您可以在创建图像时提供 framework 捆绑包。在 Swift 2 中:
class func getMyImage() -> UIImage?
let bundle = NSBundle(forClass: self)
return UIImage(named: "YourImageName", inBundle: bundle, compatibleWithTraitCollection: nil)
斯威夫特 3:
class func getMyImage() -> UIImage?
let bundle = Bundle(for: type(of: self))
return UIImage(named: "YourImageName", in: bundle, compatibleWith: nil)
这是一个演示项目,其中包含一个带有图像的框架和一个使用它的应用程序。
https://github.com/marketplacer/AssetFrameworkDemo
【讨论】:
如何在故事板或 xib 中不上课? 我也有同样的问题。每当尝试利用情节提要/ xib 中的框架资产时,即使图像显示在下拉列表中,我也会收到以下错误:无法加载从捆绑包中的笔尖引用的“请尝试访问 .framework 中的图像,如下所示:
[[UIImage alloc] initWithContentsOfFile:@"Test.framework/abc.png"];
我假设你已经复制了框架并且是 App bundle 的一部分
【讨论】:
【参考方案3】:我有一个帮助框架调用者的静态类。它有一个方法叫
+ (NSBundle*) bundelForHelper;
实现如下所示:
+ (NSBundle*) bundelForHelper
return [NSBundle bundleForClass:self];
然后在我的视图控制器中导入助手并在 viewdidload 中调用它:
UIImage *image = [UIImage imageNamed:@"MyImage"
inBundle:[MyHelper bundelForHelper]
compatibleWithTraitCollection:self.traitCollection];
【讨论】:
【参考方案4】:您可以尝试访问您的图像:
UIImage* icon = [UIImage imageNamed:@"MyLib.framework/iconName"];
查看this有关创建包含资源的框架的问题。
即使您的代码是封闭源代码,我也 recommend 使用 CocoaPods。
【讨论】:
以上是关于可可触摸框架资产在 App Project 中不可见的主要内容,如果未能解决你的问题,请参考以下文章
如何将 pod(第三方框架)添加到我的自定义可可触摸框架中?