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

本文介绍了如何在iOS开发中创建和使用自定义.bundle资源文件,详细步骤包括创建.bundle文件和引用其中的资源。特别强调.bundle文件在运行时不被编译,适合存放资源而非代码。并提供了错误演示和正确使用方法,指出通过NSBundle的路径获取资源的正确方式。

在进行资源封装的时候用到了自定义的.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;

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

//获取路径
NSString * path = [[NSBundle bundleWithIdentifier:@"YPhotoBundle"] pathForResource:@"Image" ofType:nil];

//拼接路径
path = [path stringByAppendingPathComponent:@"未选中.png"];

//获取图片对象
return [UIImage imageWithContentsOfFile: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 nil if the requested bundle is not found.


正确用法

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

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

//自定义的.bundle文件也存在与应用的主目录下,所以还是需要从主目录来拼接路径
-(NSString *)bundlePath
{
    //获取路径
    NSString * path = [[NSBundle mainBundle] pathForResource:@"YPhotoBundle" ofType:@"bundle"];

    return [path stringByAppendingPathComponent:@"Image"];

}


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

//获得正常未选中的图片
-(UIImage *)normalImage
{
    //最后加不加.png都是可以的,因为没有重名的问题
    return [UIImage imageWithContentsOfFile:[self.bundlePath stringByAppendingPathComponent:@"未选中.png"]];
}
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值