Xcode 打包靜態(tài)庫 - Bundle 資源文件包(附帶本地加載gif)

1. 什么是Bundle文件

  • Bundle 文件,簡單理解,就是資源文件包。我們將許多圖片、XIB、文本文件組織在一起,打包成一個(gè) Bundle 文件。方便在其他項(xiàng)目中引用包內(nèi)的資源。
  • Bundle 文件是靜態(tài)的,也就是說,我們包含到包中的資源文件作為一個(gè)資源包是不參加項(xiàng)目編譯的。也就意味著,bundle 包中不能包含可執(zhí)行的文件。它僅僅是作為資源,被解析成為特定的 2 進(jìn)制數(shù)據(jù)。

2. 如何制作靜態(tài)的Bundle文件

  1. 新建Bundle項(xiàng)目(本文教程使用Xcode8.3.3)
    Bundle 默認(rèn)是 macOS 系統(tǒng)的,所以創(chuàng)建的時(shí)候要在 macOS => Framework & Library 選項(xiàng)下。
圖1.png

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


圖2.png
圖3.png

項(xiàng)目創(chuàng)建完 我們發(fā)現(xiàn)Loading.bundle 是紅色的 并且設(shè)備只能是Mac, 接下來就是修改 Bundle 配置信息,使其能用于iOS

  1. 修改 Bundle 配置信息
  • 修改成iOS系統(tǒng), 選擇iOS SDK 為 Latest iOS(iOS 10.3)
圖4.png
  • Bundle 中的圖片默認(rèn)是 tiff 格式了 需要修改Bulide Settings 中的COMBINE_HIDPI_IMAGES為NO
圖5.png
  1. 添加需要打包的文件(本例中是圖片 也可以是XIB文件等)
    將圖片拖到Loading文件夾中
圖5.png
  1. 編譯生成 Bundle 文件
    我們分別選擇 Generic iOS Device 和任意一個(gè)模擬器各編譯一次,編譯完后,我們會(huì)看到工程中 Products 文件夾下的 SourcesBundle.bundle 由紅色變成了黑色。
圖6.png
圖7.png

然后點(diǎn)擊SourcesBundle.bundle 右鍵選擇show in finder 然后選擇顯示包內(nèi)容就可以看到文件資源


圖8.png
圖9.png
圖10.png

3. 如何使用 (以加載本地gif為例)

  1. 先將生成的真機(jī)(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];
        }
    }
    /// 設(shè)置圖片幀數(shù)組
    self.myImageView.animationImages = imageArr;
    /// 設(shè)置動(dòng)畫時(shí)長
    self.myImageView.animationDuration = 5;
    /// 動(dòng)畫是否重復(fù)(0代表無線循環(huán))
    self.myImageView.animationRepeatCount = 0;
    /// 開啟動(dòng)畫
    [self.myImageView startAnimating];
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容