原文:https://www.cnblogs.com/QianChia/p/6280435.html

1、Bundle 文件

  • Bundle 文件,简单理解,就是资源文件包。我们将许多图片、XIB、文本文件组织在一起,打包成一个 Bundle 文件。方便在其他项目中引用包内的资源。

  • Bundle 文件是静态的,也就是说,我们包含到包中的资源文件作为一个资源包是不参加项目编译的。也就意味着,bundle 包中不能包含可执行的文件。它仅仅是作为资源,被解析成为特定的 2 进制数据。

2、制作 Bundle 文件

  • 1、新建 Bundle 项目

    • 创建名为 SourcesBundle(最后要生成的 Bundle 文件名称)的工程,注意 Bundle 默认是 macOS 系统的,Xcode 高版本中需要在 macOS => Framework & Library 选项下找到。

  • 2、修改 Bundle 配置信息

    • 因为 Bundle 默认是 macOS 系统的,所有需要修改他的信息,修改成 iOS 系统。

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

  • 3、可选配置

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

    • 该资源包的 pch 文件和 strings 文件是可以删除的。

  • 4、添加文件

    • 将资源文件或文件夹拖动到工程中的 SourcesBundle 文件夹下面。

  • 5、编译生成 Bundle 文件

    • 我们分别选择 Generic iOS Device 和任意一个模拟器各编译一次,编译完后,我们会看到工程中 Products 文件夹下的 SourcesBundle.bundle 由红色变成了黑色。

    • 然后 show in finder,看看生成的文件。我们看到它为真机和模拟器都生成了 .bundle 资源文件。

    • 选中 .bundle 文件右键 显示包内容,我们可以看到之前拖拽到工程中的资源文件都在其中。

3、使用 Bundle 文件

  • 将生成的真机(Debug-iphoneos)Bundle 资源文件拖拽到需要使用的工程中。

  • 1、加载 Bundle 中的 xib 资源文件

        // 设置文件路径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];
    • 效果

  • 2、加载 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 资源文件包相关推荐

  1. iOS 优化资源文件

    资源文件是放置在应用程序本地与应用程序一起变异.打包和发布的非程序代码文件,如应用中的声音.视频.图片和文本文件等. 1.图片文件优化 图片文件优化包括文件格式和文件大小的优化.移动设备中,支持的图片 ...

  2. BundleLoader:帮你无缝加载自定义Bundle里的资源文件

    引子 iOS开发中,我们封装SDK给第三方使用通常采用.a或.framework + .bundle的形式.相信封装过这种带bundle资源文件的SDK的同学们一定都会遇到这样一个小麻烦.那就是加载自 ...

  3. 反编译“微软纸牌集合”资源文件

    @[TOC]反编译"微软纸牌集合"资源文件 成功反编译"微软纸牌集合"资源文件 一天时间,终于成功反编译了"微软纸牌集合(Microsoft Soli ...

  4. PyQt5教程(八)——实现QQ登录界面(二、加载资源文件)

                                         实现QQ登录界面--加载资源文件 一.创建资源文件: 上篇文章创建了QQ登录界面,本篇介绍创建并加载资源文件. 1.创建资源文 ...

  5. iOS架构-静态库.a打包之资源文件打包成bundle(4)

    iOS架构-静态库.a的打包及使用(一) iOS架构-静态库.a的脚本化打包及使用(二) 资源文件主要包括:xib.图片以及其他文件资源(json.string等).这里主要介绍 xib.图片.其他的 ...

  6. iOS 将图片文件打包为bundle资源

    1. 创建bundle,如图,点击 +  ,弹出选择框, macOS 下的Framework & Library  ,点击bundle,输入bundle的名字,然后点击 finish. 2. ...

  7. iOS架构-静态库.framework之资源文件打包bundle(6)

    iOS架构-静态库.framework手动打包及脚本化打包(5)中介绍了.framework的脚本化打包,虽然在iOS架构-静态库.a打包之资源文件打包成bundle(4)中已经演示过,其实是一样的. ...

  8. iOS获取App ipa包以及资源文件-----本人亲自测试可用!!!

    原文地址::https://www.jianshu.com/p/fdb50d303ad6 相关文章 1.iOS获取App ipa包----https://www.jianshu.com/p/7710c ...

  9. 实现iOS图片等资源文件的热更新化(二):自定义的动态 imageNamed

    这篇文章,要解决的是,使用一个自定义的 imageNamed 函数来替代系统的 imageNamed 函数.内部逻辑,将贯穿对比论证 关于"合适"的图片的定义.对iOS加载图片的规 ...

最新文章

  1. SpringMVC常用Maven POM.xml依赖包片段
  2. 使用指针输入输出一维数组
  3. 联合国召开会议讨论“杀手机器人”问题
  4. sed修炼系列(四):sed中的疑难杂症
  5. Windbg无源码调试驱动
  6. DB-Engines 3月数据库排行:排名前十数据库七成分数下降
  7. [luogu3290][SCOI2016]围棋
  8. 【caffe-Windows】微软官方caffe之 Python接口配置及图片生成实例
  9. sql 算出下级销售总和_找出总和字符串
  10. 一个java类可以有_一个.java文件中可以有几个同级类?
  11. linux ssh v6,linux – TCP / IPv6通过ssh隧道
  12. sql 计算单行数据字段空值比例_如何利用工具,迅猛定位低效SQL? | 1分钟系列...
  13. python调用通达信函数用户指标_最新最全通达信公式教程大全(函数-指标-实例)...
  14. Python井字棋游戏开发带实验报告
  15. python设置excel单元格数据类型为文本_Python xlwt设置excel单元格字体及格式
  16. Python Numpy
  17. 【Mybatis-Plus】【异常】Inferred type ‘E‘ for type parameter ‘E‘ is not within its bound;
  18. 新手使用Docker教程
  19. web绘图技术之Raphael
  20. facebook修改权限_如何在Facebook上更改小组的隐私

热门文章

  1. java 根据详细地址提取小区_Java分析/测试工具EJ Technologies JProfiler介绍及安装教程...
  2. 计算机学院特色游戏,网络游戏七大特点浅析
  3. php 动态输出图片尺寸,高并发下 php 输出图像对性能开销大不大?
  4. mysql语句_Mysql语句
  5. 偷走不经意流逝的时光,摸鱼神器:神偷
  6. 支持Dubbo接口文档生成的工具!
  7. 漫漫优化路,总会错几步!记一次接口优化!
  8. 原来这就是Java代码生成器的原理啊,太简单了
  9. 每日一皮:啥一文理解TCP和UDP的区别!这张图才是最屌的!
  10. 为什么前后端分离了,你比从前更痛苦?