在App项目中不可见的cocoa触摸框架资产

我一直在尝试从早上开始创build一个cocoa触摸farmework把我自己包含的小部件,并允许任何我正在使用的应用程序将来使用它。

我已经设法build立了项目和导出.framework文件,但所有的资产都没有显示出来。 我的所有图像都在资产目录内。

而且由于.framework文件里面有(assets.car)文件,所以它们似乎被导出。

我目前正在使用它们访问它们

UIImage* icon = [UIImage imageNamed:@"iconName"]; 

但它总是返回null,任何想法?

您可以在创build图像时提供框架包。 在Swift 2中:

 class func getMyImage() -> UIImage? { let bundle = NSBundle(forClass: self) return UIImage(named: "YourImageName", inBundle: bundle, compatibleWithTraitCollection: nil) } 

Swift 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

您可以尝试访问您的图像:

 UIImage* icon = [UIImage imageNamed:@"MyLib.framework/iconName"]; 

检查有关创build包含资源的框架的问题。

此外,我build议使用CocoaPods,即使您的代码是封闭的源代码。

请尝试访问.framework中的图像,如下所示:

 [[UIImage alloc] initWithContentsOfFile:@"Test.framework/abc.png"]; 

我假设你已经复制了框架,并且是应用程序包的一部分

我有一个帮助框架调用者的静态类。 它有一个叫做的方法

 + (NSBundle*) bundelForHelper; 

实现看起来像这样:

 + (NSBundle*) bundelForHelper{ return [NSBundle bundleForClass:self]; } 

然后在我的视图控制器我导入助手,并在viewdidload中调用:

 UIImage *image = [UIImage imageNamed:@"MyImage" inBundle:[MyHelper bundelForHelper] compatibleWithTraitCollection:self.traitCollection];