美文网首页
iOS开发------使用自定义.bundle中的资源文件

iOS开发------使用自定义.bundle中的资源文件

作者: 尼古拉斯帅德布耀德 | 来源:发表于2017-11-08 11:31 被阅读0次

在进行资源封装的时候用到了自定义的.bundle文件,之前在很多的SDK中也可以看到它的身影,就稍微了解了一下,不难,就是在引用里面文件的时候浪费点时间,浪费的原因下面也有说,这里就记录一下如何自定义创建.bundle以及如何引用里面的资源文件.

在使用.bundle文件的时候需要注意:这个文件在运行的时候不会被编译到,So,此文件中存储的内容应该是资源文件,不能放编译的文件(比如能编译运行的代码)。

创建.Bundle文件

1、右键(双指点击) -> New File ->iOS-> Resource -> Settings Bundle

2、在这里楼主起名叫做YPhotoBundle,这里也不需要写后缀名(.bundle),然后点击Create即可

3、这个时候就会看到在创建路径下会有一个YPhotoBundle.bundle文件,右键(双指点击)打开包文件

4、里面原来的东西不需要的可以都删掉,因为楼主放的是图片资源,所以直接把Image文件夹放到了里面,然后添加到项目中,就可以看到自定的.bundle文件以及里面的资源文件

使用自定义.Bundle里面的资源文件

错误演示

先来一个错误演示,也是浪费了点时间的原因,由于第一次这么干,习惯性的Command + 单击,看到里面有这么一个方法

+ (nullable NSBundle *)bundleWithIdentifier:(NSString *)identifier;

1

1

自认为是.bundle的名字默认当做Identifier,于是就想用这个方法获取自定义的NSBundle文件,于是乎,获取图片用的是一下代码:

//获取路径

NSString* path = [[NSBundlebundleWithIdentifier:@"YPhotoBundle"] pathForResource:@"Image"ofType:nil];

//拼接路径

path = [path stringByAppendingPathComponent:@"未选中.png"];

//获取图片对象

return[UIImageimageWithContentsOfFile:path];

结果发现,返回的bundle,path,image全部为nil,于是又仔细读一下它的官方文档:

//返回之前创建过并且拥有bundle identifier的NSBundle实例

Returns the previously created NSBundle instance that has the specified bundle identifier.

/**

*如果找不到,则返回nil

*好吧我承认结果就是找不到0.0,我也不知道如何在创建.bundle的时候给予他bundle identifier

*因为在Methods for creating的方法里没有找到,如果有知道的大神,麻烦告知一下 Mark

**/

The previously created NSBundle instance that has the bundle identifier identifier. Returns nilifthe requested bundle is not found.

正确用法

前面扯了段错误演示,(傲娇了一下 - -),正确的用法如下:

1、获得自定义.bundle文件的路径

//自定义的.bundle文件也存在与应用的主目录下,所以还是需要从主目录来拼接路径

-(NSString*)bundlePath

{

//获取路径

NSString* path = [[NSBundlemainBundle] pathForResource:@"YPhotoBundle"ofType:@"bundle"];

return[path stringByAppendingPathComponent:@"Image"];

}

2、在引用图片的时候在使用方法就可以获取到YPhotoBundle.bundle里面Image下的资源文件。

//获得正常未选中的图片

-(UIImage*)normalImage

{

//最后加不加.png都是可以的,因为没有重名的问题

return[UIImageimageWithContentsOfFile:[self.bundlePathstringByAppendingPathComponent:@"未选中.png"]];

}

相关文章

网友评论

      本文标题:iOS开发------使用自定义.bundle中的资源文件

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