資源依賴#
我們?cè)谑褂眠h(yuǎn)程私有庫(kù)的時(shí)候勢(shì)必會(huì)涉及到資源的加載赏淌,其中不可回避的就是我們的xib和圖片昨登,那么我們接下來(lái)我們一邊通過(guò)將主骨架拆成我們的組件一邊來(lái)講解怎么處理我們的xib文件和我們的圖片
-
首先來(lái)創(chuàng)建一個(gè)模板庫(kù)
-
創(chuàng)建出來(lái)的主骨架的模板庫(kù)
-
然后將主骨架的核心代碼拖到Classes文件夾下面
-
使用pod install將主骨架庫(kù)安裝到測(cè)試工程中
-
按照我們的宿主工程的代碼,我們將delegate里面的內(nèi)容復(fù)制過(guò)去蚌讼,并且編譯一下但是我們發(fā)現(xiàn)提示不存在,我們進(jìn)去看看
-
原來(lái)是缺了基礎(chǔ)組件的布局文件
-
那么我們給描述文件中添加依賴
-
pod install安裝居然出現(xiàn)問(wèn)題了
-
添加源
-
將測(cè)試控制器也集成進(jìn)來(lái)看看最終的效果吧
-
編譯過(guò)程中報(bào)錯(cuò),我們來(lái)看看報(bào)錯(cuò)的原因把
原因:導(dǎo)入的組件代碼有xib嵌洼,但是找不到xib運(yùn)行,因?yàn)閤ib屬于資源封恰,不能當(dāng)成代碼導(dǎo)入麻养,也就是需要用resource_bundles導(dǎo)入。
- 運(yùn)行:找不到xib诺舔,因?yàn)閤ib被存放到資源的bundle中鳖昌,因此需要添加前綴
//獲取當(dāng)前bundle名稱
NSString *bundleName = currentBundle.infoDictionary[@"CFBundleName"];
bundleName = [NSString stringWithFormat:@"%@.bundle",bundleName];
//xib名稱需要拼接Bundle名稱,否則找不到xib
NSString *nibName = [NSString stringWithFormat:@"%@/TZMiddleView",bundleName];
TZMiddleView *middleView = [[currentBundle loadNibNamed:nibName owner:nil options:nil] firstObject];
- 友情提醒:如果組件中使用了資源低飒,一定要把組件生成framework许昨,不能生成.a,否則資源拿不到.
podfile文件中添加描述use_frameworks!
-
最后我們看看集成完成我們測(cè)試工程之后項(xiàng)目運(yùn)行的樣子
我們發(fā)現(xiàn)已經(jīng)和我們宿主工程成的樣子相差無(wú)幾了,但是由于我們的資源都在宿主工程而沒(méi)有在我們的組件當(dāng)中褥赊,所以所有的圖片都無(wú)法加載糕档,我們其實(shí)應(yīng)該將我們的圖片資源都加載到我們的組件當(dāng)中,否則以后別人使用我們的組件還得單獨(dú)下載圖片拌喉,這違背了我們的初衷速那。