網上關於.framework
的製做與各類基於.bundle
的圖片資源使用已有許多,這裏再也不贅述。只是翻了一些博文/問答發現裏面提到.framework
不能使用.xcassets
管理圖片,或者給出的方法並無什麼用,所以就寫(guan)寫(shui)怎麼在.framework
中使用.xcassets
管理文件web
.xcassets
在打包後會變成Assets.car
,然而imageNamed:
因爲默認位置沒法找到framework的圖片資源,因此返回爲nilapp
.xcassets
已經被打包進framework,而且.framework
已經出現Assets.car
文件PROJECT TARGETS
->General
->Embedded Binaries
中加入須要使用圖片資源的frameworkImgFramework.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的空間,對於太小圖片資源沒有必要使用.xcassets
ui
在圖片比較多的狀況下,比起直接引用圖片,使用.xcassets
能夠明顯減小空間佔用url