设为首页 加入收藏

TOP

iOS 封装SDK以及封装时bundle文件的处理
2017-12-11 09:19:10 】 浏览:282
Tags:iOS 封装 SDK 以及 bundle 文件 处理

这篇教程的主要目的是解释怎么样在你的iOS工程中创建并使用一个SDK,俗称.a文件。


环境:xcode 9.0


 打开Xcode,点击File\New\Project,


选择iOS\Framework and Library\Cocoa Touch Static Library新建一个静态库工程.



将工程命名为SDKTest,然后将工程保存到一个空目录下。



当创建静态库工程时,Xcode会自动添加.h和.m。


你不需要实现文件,因此右键单击SDKTest.m选择delete,将它删除即可。


然后工程就已经可以用了了,是时候为你的库添加一些功能了。


由于本篇教程的关键在于教你怎么样创建一个SDKTest.a,


而不是怎么样构建一个UI控件,这里你可以使用你自己封装好的控件。


将你的控件从Finder中拖到Xcode的SDKTest目录下。


这里我使用别人封装过我进行二次封装的日历。


这里有一点要注意了,控件拖进工程这里一定要勾选以下三个选项:


Copy items if needed


create gruoups


Add to targets




对你的控件的头文件需要做的另一件事是将其添加到库的主头文件SDKTest.h中。


在这个主头文件的帮助下,开发者使用你的库仅仅需要导入一个头文件,


如下面的代码一样,而不是自己去选择自己需要的一块导入。


接下来就生成静态库


静态库分为手机和模拟器两种(手机端的只有手机能调用,模拟器的只有模拟器能调用)。


首先,构建模拟器的静态库,如图(点击三角按钮就可以了,其实是编译,图片中我写成了运行)!



然后show in Finder把.a文件拖到桌面即可,


真机的.a文件一样的道理,可以改一个名字方便合成一个.a文件。




之后打开终端执行下面的命令,这里就不复制了,


手敲一下记忆一下,运行时候桌面会生成一个合成的.a文件。




之后拿到这个.a文件 还有和他相关的所有.h文件,存放在一个新的文件夹里(随便起名,如下



现在呢,你就可以拿着这个文件夹去测试了。将它拖到你要应用了工程中



这样之后你就可以引用SDKTest.h文件进行使用刚才的控件了,其实很简单的。


我在这里遇到了一个问题;在我使用的时候报这个错误,


这个可以这样解决:把对应的 Use Safe Area Layout Guide 去掉勾选即可




感谢这个篇文章:http://blog.csdn.net/objectivepla/article/details/51211541


但是这只是对没有引用图片和xib的控件而言的,


如果你要打包的SDK包含xib怎么办呢,这类的资源文件是需要另外处理的。


这里就需要知道bundle


bundle 是一个目录,其中包含了程序会使用到的资源.


这些资源包含了如图像,声音,编译好的代码,nib文件(用户也会把bundle称为plug-in).对应bundle,


cocoa提供了类NSBundle.


 简单的 bundle 文件的创建,只需要在本地创建一个文件夹,给文件夹添加后缀@".bundle"图片可以放进去。


但是xib文件我们需要把xib文件手动转换成nib文件


举个例子 指令如下:


这样你就可以得到nib文件了。


当然有复杂一点的 bundle 文件的创建 就是使用Xcode 



添加需要的资源文件


加入你需要编译在bundle中的资源文件。至少选择Base SDK 是iOS的,默认选择是mac的


其他的设置可以参考百度



 获取.budle文件同样和获取.a文件一样,编译一下 然后show in Finder


 可以修改文件的名字和SDK的一样


将要使用的bundle集成到项目中后,就可以使用了。


需要注意的就是,bundle是静态的,不进行编译的资源文件。


所以,要使用bundle中的资源,就需要找到相应的资源路径


注意:


有xib 的.a文件打包前记得修改xib的应用方式为nib,对应的图片也是


对于.budle文件的引用 


bundle资源包的使用:


把生成的bundle文件拖到要使用工程中;


// 设置文件路径


NSString *bundlePath = [[NSBundlemainBundle]pathForResource:@"SourcesBundle"ofType:@"bundle"];


NSBundle *resourceBundle = [NSBundlebundleWithPath:bundlePath];


 // 加载 nib文件


UINib *nib = [UINibnibWithNibName:@"Demo"bundle:resourceBundle];


NSArray *viewObjs = [nibinstantiateWithOwner:niloptions:nil];


 // 获取 xib文件


UIView *view = viewObjs.lastObject;


view.frame = CGRectMake(20,50,self.view.bounds.size.width -40,self.view.bounds.size.width -40);


[self.view addSubview:view];


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Android 程序执行Linux命令注意事.. 下一篇ARKit 增强现实平台 尝试(Xcode9 ..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目