iOS 添加Resource bundle target(静态库中使用图片等资源)

时间:2022-05-20 07:00:53

一、首先将资源文件打包成bundle

新建工程:File -> New -> Project... -> OS X -> Framework & Library -> Bundle

我们必须借助于OS X,因为iOS框架中没有创建Bundle的模板

iOS 添加Resource bundle target(静态库中使用图片等资源)

填写项目名称

iOS 添加Resource bundle target(静态库中使用图片等资源)

保存位置

iOS 添加Resource bundle target(静态库中使用图片等资源)

其实本无需这么麻烦,bundle的本质是一个目录,我们完全可以创建一个文件夹,把需要封装的资源文件拷贝至该目录下,将其改成后缀名为bundle即可,然后就可以使用NSBundle提供的接口访问其内部的资源文件,当然,也可以通过访问普通文件目录的方法访问其内部的资源。

此处主要是考虑到有xib文件的存在,由前面的知识可知,xib是文本文件,编译后要被序列化为二进制的nib文件,使用时将nib文件反序列化,就可以正常显示界面了。而bundle本身是静态的,其内部的资源包不参与项目的编译,所以,此处必须创建工程把xib序列化为二进制的nib,否则的话,直接创建文件夹后改名就可以了。

因此一些辅助文件(红色矩形框起的部分)都不需要了,直接删除即可

iOS 添加Resource bundle target(静态库中使用图片等资源)

有一点一定要十分十分的小心:

删除上面红色矩形框中文件时,可以完全的删除,因为这些文件都是我们自己创建的

iOS 添加Resource bundle target(静态库中使用图片等资源)

iOS 添加Resource bundle target(静态库中使用图片等资源)

而删除下面矩形框中的文件时,千万不能“Move to Trash”,只能"Remove References"(删除引用),因为framework是系统框架的一部分,如果删除了,下次运行时候,就会报错。我就犯过这个低级错误,从来没想过系统文件会被自己删除,所以也没往这方面去想,以至于花费了很长时间才解决了问题。

iOS 添加Resource bundle target(静态库中使用图片等资源)

由于我们删除了plist文件,所以必须在Build Settings中删除对它的引用

iOS 添加Resource bundle target(静态库中使用图片等资源)

同样,也要删除pch文件的引用

iOS 添加Resource bundle target(静态库中使用图片等资源)

我们创建项目时选的是OS X中的框架,所以此处需要修改Base SDK为iOS

iOS 添加Resource bundle target(静态库中使用图片等资源)

修改后

iOS 添加Resource bundle target(静态库中使用图片等资源)

设置完毕,现在拷贝资源文件到项目中来

iOS 添加Resource bundle target(静态库中使用图片等资源)

正是我们需要的两个图片文件,一个xib文件

iOS 添加Resource bundle target(静态库中使用图片等资源)

一切就绪,按快捷键"Command + B"编译,编译成功后,Products下面的MyToolsWithAssetsA.bundle由红色变成了黑色,表示编译成功

iOS 添加Resource bundle target(静态库中使用图片等资源)

找到生成的bundle所在的目录

iOS 添加Resource bundle target(静态库中使用图片等资源)

查看里面的内容

iOS 添加Resource bundle target(静态库中使用图片等资源)

打开

iOS 添加Resource bundle target(静态库中使用图片等资源)

正是我们所需要的,xib也被转化成了nib

iOS 添加Resource bundle target(静态库中使用图片等资源)

原文链接:http://www.cnblogs.com/mylizh/p/3971544.html