在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) }
这是一个演示项目,其中包含一个带有图像的框架和一个使用它的应用程序。
您可以尝试访问您的图像:
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];