目前項目組件化已經(jīng)告一段落,我把總結(jié)的相關文章列羅出來
創(chuàng)建cocoapod私有庫詳細步驟(基礎組件組件化)
iOS組件化方案與實踐:Target-Action
iOS組件化解決圖片顯示問題
xib文件如何組件化(cocoapod私有庫)?
適合小白的iOS項目組件化完整詳細流程判耕,每步都有demo
pod trunk push使用
iOS項目組件化遇到的問題及解決(100%遇得到)
Cocoapods 更新索引庫或者指定第三方
在組件化時攒巍,對于圖片資源,我們需要把對應組件的圖片資源放到對應組件如下位置:
這里有個注意的地方:
在上圖Assets目錄下是直接把相關圖片導入進來還是在Assets下新建一個文件夾,再把圖片導入到該文件夾庇忌,取決于podspec文件的下圖位置:
對應下圖
*****************************============**************************
對應下圖
總的來說义屏,步驟就是
- 把圖片資源放到Assets目錄下
- 修改podspec文件
- cd到example下靠汁,pod install把圖片導入測試項目中,效果如圖:
- 顯示圖片闽铐。
注意:
顯示圖片如果使用如下方式的話蝶怔,是不能正常顯示圖片的
_imgView.image = [UIImage imageNamed:@"Group@%2x.png"];
原因是這種方式默認是從mainBundle中去加載圖片,然而組件化之后兄墅,圖片已經(jīng)不再mainBundle中了踢星,實際是在對應組件下的bundle 里面。
解決辦法:
NSBundle *currentBundle = [NSBundle bundleForClass:[self class]];
//圖片名稱要寫全稱
NSString *patch = [currentBundle pathForResource:@"Group.png" ofType:nil inDirectory:@"wgPersonInfoKit.bundle"];
_imgView.image = [UIImage imageWithContentsOfFile:patch];
因為修改的地方會很多隙咸,所以把這個方法抽出來:
新建一個UIImage的分類
#import <UIKit/UIKit.h>
@interface UIImage (wgBundle)
+ (instancetype)wg_imgWithName:(NSString *)name bundle:(NSString *)bundleName targetClass:(Class)targetClass;
@end
#import "UIImage+wgBundle.h"
@implementation UIImage (wgBundle)
+ (instancetype)wg_imgWithName:(NSString *)name bundle:(NSString *)bundleName targetClass:(Class)targetClass{
NSInteger scale = [[UIScreen mainScreen] scale];
NSBundle *curB = [NSBundle bundleForClass:targetClass];
NSString *imgName = [NSString stringWithFormat:@"%@@%zdx.png", name,scale];
NSString *dir = [NSString stringWithFormat:@"%@.bundle",bundleName];
NSString *path = [curB pathForResource:imgName ofType:nil inDirectory:dir];
return path?[UIImage imageWithContentsOfFile:path]:nil;
}
@end
在使用的地方:
_imgView.image = [UIImage wg_imgWithName:@"Group" bundle:@"wgPersonInfoKit" targetClass:[self class]];
到這里就已經(jīng)完成圖片資源的顯示問題沐悦,不過應該把這個分來放到基礎組件之中.
如果已經(jīng)有了基礎組件成洗,則修改基礎組件即可;
如沒有,則需要新建基礎組件藏否,請參考基礎組件組件化
如果使用我的demo的話泌枪,可以看到我修改了wgPersonInfoKit組件的podspec索引文件,因為該組件需要用到上個UIImage的分類秕岛, 我把這個分類組件化了碌燕,名稱為wgCommonKit。
修改如下:
下面驗證并把podspec文件上傳索引庫
然后回到主工程WGLearnMTMediatorDemo
修改Podfile文件:
執(zhí)行 pod install
運行如圖