可可触摸框架资产在 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 中的框架资产时,即使图像显示在下拉列表中,我也会收到以下错误:无法加载从捆绑包中的笔尖引用的“”图像带有标识符“。有什么想法吗?【参考方案2】:

请尝试访问 .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(第三方框架)添加到我的自定义可可触摸框架中?

xcodebuild 命令无法与动态可可触摸框架一起正常工作

构建纯Swift可可触摸框架

如何展示我的可可触摸框架故事板屏幕?