美文网首页收藏问题
iOS_Bundle资源文件包

iOS_Bundle资源文件包

作者: 番茄炒西红柿啊 | 来源:发表于2017-05-15 22:53 被阅读37次

    Bundle文件

    • Bundle 文件,简单理解,就是资源文件包。我们将许多图片、XIB、文本文件组织在一起,打包成一个 Bundle 文件。方便在其他项目中引用包内的资源。
    • Bundle 文件是静态的,也就是说,我们包含到包中的资源文件作为一个资源包是不参加项目编译的。也就意味着,bundle 包中不能包含可执行的文件。它仅仅是作为资源,被解析成为特定的 2 进制数据。

    制作Bundle文件

    1. 新建Bundle项目
    新建项目.png

    2.修改 Bundle 配置信息


    01.png
    • 设置 Build Setting 中的 COMBINE_HIDPI_IMAGES 为 NO,否则 Bundle 中的图片就是 tiff 格式了。


      02.png
    • 作为资源包,仅仅需要编译就好,无需安装相关的配置,设置 Skip Install 为 YES。同样要删除安装路径 Installation Directory 的值。


      03.png
      04.png
    • 设置完成后,将需要添加的资源copy到项目中,
      分别选择Generic iOS Device 和 iPhone模拟器运行一遍,然后在Show in Finder中找到编译出的真机Bundle就可以用了。


      05.png
    06.png

    使用示例代码如下:

     // 设置文件路径
        NSString *bundlePath = [[NSBundle mainBundle] pathForResource:@"SourcesBundle" ofType:@"bundle"];
        NSBundle *resourceBundle = [NSBundle bundleWithPath:bundlePath];
    
        // 加载 nib 文件
        UINib *nib = [UINib nibWithNibName:@"BundleDemo" bundle:resourceBundle];
        NSArray *viewObjs = [nib instantiateWithOwner:nil options: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];
    

    加载 Bundle 中的图片资源文件

    指定绝对路径的形式

    UIImage *image = [UIImage imageNamed:@"SourcesBundle.bundle/demo2.jpg"];
    

    拼接路径的形式

    NSString *bundlePath = [[NSBundle mainBundle] pathForResource:@"SourcesBundle" ofType:@"bundle"];
    NSString *imgPath= [bundlePath stringByAppendingPathComponent:@"demo4"];
    
    UIImage *image = [UIImage imageWithContentsOfFile:imgPath];
    

    宏定义的形式

    #define MYBUNDLE_NAME   @"SourcesBundle.bundle"
    #define MYBUNDLE_PATH   [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:MYBUNDLE_NAME]
    #define MYBUNDLE        [NSBundle bundleWithPath:MYBUNDLE_PATH]
    
    NSString *imgPath= [MYBUNDLE_PATH stringByAppendingPathComponent:@"demo4"];
    UIImage *image = [UIImage imageWithContentsOfFile:imgPath];
    

    原文链接

    相关文章

      网友评论

        本文标题:iOS_Bundle资源文件包

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