iOS Framework 使用.xcassets 圖片資源

 

網上關於.framework的製做與各類基於.bundle的圖片資源使用已有許多,這裏再也不贅述。只是翻了一些博文/問答發現裏面提到.framework不能使用.xcassets管理圖片,或者給出的方法並無什麼用,所以就寫(guan)寫(shui)怎麼在.framework中使用.xcassets管理文件web

.xcassets在打包後會變成Assets.car,然而imageNamed:因爲默認位置沒法找到framework的圖片資源,因此返回爲nilapp

具體步驟

  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專門放圖ide

因爲framework自己在默認設置下就已經佔了27KB的空間,對於太小圖片資源沒有必要使用.xcassetsui

fwo

在圖片比較多的狀況下,比起直接引用圖片,使用.xcassets能夠明顯減小空間佔用url

  • 原xcassets大小

imgsiz

  • 使用xcassets的framework大小

imgsiz

相關文章
相關標籤/搜索