Xcode 打包静态库 - Bundle 资源文件包(附带本地加载gif)

1. 什么是Bundle文件

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

2. 如何制作静态的Bundle文件

  1. 新建Bundle项目(本文教程使用Xcode8.3.3)
    Bundle 默认是 macOS 系统的,所以创建的时候要在 macOS => Framework & Library 选项下。
Xcode 打包静态库 - Bundle 资源文件包(附带本地加载gif)_第1张图片
图1.png

Product Name “Loading” 就是最后要生成的 Bundle 文件名称


Xcode 打包静态库 - Bundle 资源文件包(附带本地加载gif)_第2张图片
图2.png
Xcode 打包静态库 - Bundle 资源文件包(附带本地加载gif)_第3张图片
图3.png

项目创建完 我们发现Loading.bundle 是红色的 并且设备只能是Mac, 接下来就是修改 Bundle 配置信息,使其能用于iOS

  1. 修改 Bundle 配置信息
  • 修改成iOS系统, 选择iOS SDK 为 Latest iOS(iOS 10.3)
Xcode 打包静态库 - Bundle 资源文件包(附带本地加载gif)_第4张图片
图4.png
  • Bundle 中的图片默认是 tiff 格式了 需要修改Bulide Settings 中的COMBINE_HIDPI_IMAGES为NO
Xcode 打包静态库 - Bundle 资源文件包(附带本地加载gif)_第5张图片
图5.png
  1. 添加需要打包的文件(本例中是图片 也可以是XIB文件等)
    将图片拖到Loading文件夹中
Xcode 打包静态库 - Bundle 资源文件包(附带本地加载gif)_第6张图片
图5.png
  1. 编译生成 Bundle 文件
    我们分别选择 Generic iOS Device 和任意一个模拟器各编译一次,编译完后,我们会看到工程中 Products 文件夹下的 SourcesBundle.bundle 由红色变成了黑色。
Xcode 打包静态库 - Bundle 资源文件包(附带本地加载gif)_第7张图片
图6.png
Xcode 打包静态库 - Bundle 资源文件包(附带本地加载gif)_第8张图片
图7.png

然后点击SourcesBundle.bundle 右键选择show in finder 然后选择显示包内容就可以看到文件资源


Xcode 打包静态库 - Bundle 资源文件包(附带本地加载gif)_第9张图片
图8.png
Xcode 打包静态库 - Bundle 资源文件包(附带本地加载gif)_第10张图片
图9.png
Xcode 打包静态库 - Bundle 资源文件包(附带本地加载gif)_第11张图片
图10.png

3. 如何使用 (以加载本地gif为例)

  1. 先将生成的真机(Debug-iphoneos)Bundle 资源文件拖拽到需要使用的工程中
  2. 获取bundle中的图片资源
    NSFileManager *manager = [NSFileManager defaultManager];
  
    NSString *path = [[NSBundle mainBundle] pathForResource:@"Loading" ofType:@"bundle"];

    NSArray *array = [manager contentsOfDirectoryAtPath:path error:nil];

    NSMutableArray *imageArr = [NSMutableArray arrayWithCapacity:0];

    for (NSString *name in array) {
         /// 拼接路径
        UIImage *image = [UIImage imageNamed:[path stringByAppendingPathComponent:name]];
        if (image) {
            [imageArr addObject:image];
        }
    }
    /// 设置图片帧数组
    self.myImageView.animationImages = imageArr;
    /// 设置动画时长
    self.myImageView.animationDuration = 5;
    /// 动画是否重复(0代表无线循环)
    self.myImageView.animationRepeatCount = 0;
    /// 开启动画
    [self.myImageView startAnimating];

你可能感兴趣的:(Xcode 打包静态库 - Bundle 资源文件包(附带本地加载gif))