美文网首页
iOS打包framework实践四 打包xib文件到framwo

iOS打包framework实践四 打包xib文件到framwo

作者: 芝麻酱的简书 | 来源:发表于2018-11-15 11:08 被阅读14次

如果framwork中需要包含xib文件,则可以通过如下几种方式:

一、如果是打包静态framwork

如果Mach-o Type(见 https://www.jianshu.com/p/3f9bbb3959b5)选择的是Static Library静态库,即我们创建的是静态framwork,则有如下两种方式:

1.xib直接放到framework工程

iOS8开始,framwork可以直接放资源文件,所以我们可以把xib文件跟源码文件放在一起,然后编译生成framwork

如果framework中其他文件需要用到framwork中的xib,比如:
此framework中的NewViewController使用到了ZMJView.xib

引用xib如下:

    NSBundle *bundle = [NSBundle bundleForClass:[self class]];
    NSString *path = [bundle pathForResource:@"ZMJTestFramework" ofType:@"framework"];
    NSBundle *SDKBundle = [NSBundle bundleWithPath:path];
    
    ZMJView *view = [SDKBundle loadNibNamed: @"ZMJView" owner: nil options: nil].firstObject;
    [self.view addSubview: view];

然后编译 生成framework,把framework拖入到目标工程,
Build Phases - Copy Bundle Resources增加framework
即可正常显示xib文件

2.xib放到bundle中

上面是直接把xib文件放到framework中,也可以把xib文件放到bundle文件中,然后编译生成framework后,跟图片一样把framework和bundle同时拉入到目标工程中。
xib放到bundle中引用如下:

NSString *path = [[NSBundle mainBundle] pathForResource:@"FrameworkUseBundle" ofType:@"bundle"];
    NSBundle *SDKBundle = [NSBundle bundleWithPath:path];
    
FrameworkUseBundleVC *fw = [[FrameworkUseBundleVC alloc] initWithNibName:@"FrameworkUseBundleVC" bundle:SDKBundle];
    
[self presentViewController:fw animated:YES completion:nil];


二、如果是打包动态framwork

如果Mach-o Type选择的是Dynamic Library动态库,即我们创建的是动态framwork:
直接把xib文件放入到framwork工程中即可,然后编译生成framework,把framework放入到目标工程中
目标工程General - Embedded Binaries中增加framework

代码使用:

//加载方式1
 NSBundle *SDKBundle = [NSBundle bundleForClass:[NewViewController class]];
    
//加载方式2  bundleWithIdentifier是Framework的BundleIdentifier
NSBundle *SDKBundle = [NSBundle bundleWithIdentifier:@"com.wecan.Framework-Xib"];

NewViewController *vc = [[NewViewController alloc] initWithNibName:@"NewViewController" bundle:SDKBundle];
    
[self presentViewController: vc animated:YES completion:nil];

相关文章

网友评论

      本文标题:iOS打包framework实践四 打包xib文件到framwo

      本文链接:https://www.haomeiwen.com/subject/xhoefqtx.html