資源依賴#
我們在使用遠程私有庫的時候勢必會涉及到資源的加載,其中不可回避的就是我們的xib和圖片,那么我們接下來我們一邊通過將主骨架拆成我們的組件一邊來講解怎么處理我們的xib文件和我們的圖片
-
首先來創建一個模板庫
創建模板庫.png -
創建出來的主骨架的模板庫
創建主骨架庫.png -
然后將主骨架的核心代碼拖到Classes文件夾下面
拖入核心代碼.png -
使用pod install將主骨架庫安裝到測試工程中
安裝主骨架庫到測試工程.png -
按照我們的宿主工程的代碼,我們將delegate里面的內容復制過去,并且編譯一下但是我們發現提示不存在,我們進去看看
TZBarController實現文件.png -
原來是缺了基礎組件的布局文件
-
那么我們給描述文件中添加依賴
-
pod install安裝居然出現問題了
-
添加源
-
將測試控制器也集成進來看看最終的效果吧
-
編譯過程中報錯,我們來看看報錯的原因把
原因:導入的組件代碼有xib,但是找不到xib運行,因為xib屬于資源,不能當成代碼導入,也就是需要用resource_bundles導入。
- 運行:找不到xib,因為xib被存放到資源的bundle中,因此需要添加前綴
//獲取當前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!
-
最后我們看看集成完成我們測試工程之后項目運行的樣子
我們發現已經和我們宿主工程成的樣子相差無幾了,但是由于我們的資源都在宿主工程而沒有在我們的組件當中,所以所有的圖片都無法加載,我們其實應該將我們的圖片資源都加載到我們的組件當中,否則以后別人使用我們的組件還得單獨下載圖片,這違背了我們的初衷。