第一.组件中创建文件夹
根据(基于GitLab的私有仓库一)的方式,已经把私有库创建出来了,并且已经组装进了自己想要的工程(ComponentBasedDemo)。那么,如果我们想在组件中做到像主工程中那样,利用文件夹区分小模块,要怎么办呢?
错误的做法:在组件中直接右击->new group或者是去组件物理目录下,创新新的文件夹,并且在组件中add进来,以上做法都是不正确的,虽然在你本地看上去没什么问题,但是别人pod的你的组件的时候,无法携带你创建的文件夹。
手动创建新的文件夹命名为PayListProject,并且在组件中add进来,并且完成以上图片上的配置。
之后可以更新组件了,更新命令:
git add -A && git commit -m "add pod files"
git remote add origin https://gitlab.com/xxxxxx/PayListProject.git //连接远程github项目
git tag '0.1.0' //这里的版本号注意要和podspec文件中的版本号统一
git push --tags //将本地tag更新到github项目上去
git push origin master //将本地项目更新到github项目上去
pod repo push MySpecs PayListProject.podspec --use-libraries --allow-warnings
完成后,在需要此组件的工程中,更新此组件的最新版本。
第二.组件中添加xib和资源文件
如果我们组件化中的页面需要使用xib或者图片资源怎么办呢?
一般的平时的用法:
创建带有xib的vc:ViewController *vc = [[ViewController alloc]initWithNibName:@"ViewController" bundle:nil];
添加图片: [self.imageView setImage:[UIImage imageNamed:@"ask_answer"]];
但是,很遗憾以上做法,在私有库中无法实现。
众所周知,我们主工程中xib,在使用的时候都会被编译成nib文件,具体查看方式(在主工程中):
NSBundle *bundle = [NSBundle bundleForClass:[self class]];
把bundle打印出来
/Users/用户名/Library/Developer/CoreSimulator/Devices/584B3758-D1DC-468A-A981-643303ADAD14/data/Containers/Bundle/Application/AF3AEC5C-A74F-4E02-A2D7-13AE904720B5/PayListProject_Example.app,进入PayListProject_Example.app中就会发现你在主工程中创建的xib,在此处会以nib的方式存在着。
但是,如果你在组建中创建xib的时候,以上目录下面却没有。所以如果你强行加载组件中xib,只会出现crash。
那么正确的做法:
我们创建一个新的vc带有xib,同时也创建一个xcassets文件,并且要把xib和xcassets放入assets文件夹中。
注意:创建xcassets后,最好放一张图片进去,不然上传的时候,系统发现里面没有资源,可能不会上传。