iOS Framework 使用.xcassets 圖片資源


 

網上關於.framework的制作與各種基於.bundle的圖片資源使用已有許多,這里不再贅述。只是翻了一些博文/問答發現里面提到.framework不能使用.xcassets管理圖片,或者給出的方法並沒有什么用,因此就寫(guan)寫(shui)怎么在.framework中使用.xcassets管理文件

.xcassets在打包后會變成Assets.car,然而imageNamed:由於默認位置無法找到framework的圖片資源,所以返回為nil

具體步驟

  1. 確認.xcassets已經被打包進framework,並且.framework已經出現Assets.car文件
  2. PROJECT TARGETS->General->Embedded Binaries中加入需要使用圖片資源的framework
  3. 圖片獲取如下,從ImgFramework.framework獲取對應imgName的圖片。
NSString *path = [[NSBundle mainBundle] pathForResource:@"ImgFramework" ofType:@"framework" inDirectory:@"Frameworks"];
NSBundle *bundle = [NSBundle bundleWithPath:path];
UIImage *img = [UIImage imageNamed:imgName inBundle:bundle compatibleWithTraitCollection:nil];

后記

Embedded Binaries會直接把framework放到app包中,直接增大應用大小,若要用.xcassets管理靜態庫的圖片資源最好直接分離一個framework專門放圖

由於framework本身在默認設置下就已經占了27KB的空間,對於過小圖片資源沒有必要使用.xcassets

fwo

在圖片比較多的情況下,比起直接引用圖片,使用.xcassets可以明顯減少空間占用

  • 原xcassets大小

imgsiz

  • 使用xcassets的framework大小

imgsiz


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM