前言:
去年我開源一個群頭像框架CDDGroupAvatar,在第一個版本上傳GitHub之后引發了一個思考??。我的框架默認是集成SDWebImage
有默認依賴啊,這個問題的處理就這這次版本的更新所要解決核心問題。
1:SDWebImage?可以除去依賴么
用戶1說:我的項目沒有用SDWebImage
,我們用的是YYWebImage
那豈不是我用了你寫的框架就存在兩個圖片加載框架,我不喜歡?框架過載了
解決方案:在之前的版本中是存在這個問題,怎么處理框架設計的時候稍微改動一下就可以,我們可以去掉SDWebImage
讓CDDGroupAvatar
成為一個純UI框架,加載交給用戶,我們負責根Type生成布局就行。
- 頭文件代碼如下
/**
設置群頭像
@param groupId 群頭像id
@param groupSource 群頭像數據源數組
*/
- (void)dc_setNoCacheImageAvatarWithGroupId:(NSString *)groupId Source:(NSArray <UIImage *>*)groupSource;
/**
設置群頭像
@param groupId 群頭像id
@param groupSource 群頭像數據源數組
@param completedBlock <NSString *groupId, UIImage *groupImage, NSArray <UIImage *>*itemImageArray, NSString *cacheId>
*/
- (void)dc_setNoCacheImageAvatarWithGroupId:(NSString *)groupId Source:(NSArray <UIImage *>*)groupSource completed:(GroupImageBlock)completedBlock;
- 調用案例
[self.ncImageViewW4 dc_setNoCacheImageAvatarWithGroupId:@"avImageViewW4" Source:@[[UIImage imageNamed:@"noCache1"],[UIImage imageNamed:@"noCache2"],[UIImage imageNamed:@"noCache3"],[UIImage imageNamed:@"noCache4"]]];
我們接受圖片對象數組來最終生成用戶需要的群頭像。
搞定!!!!
2:這樣就結束了?并沒有
用戶2說:我們項目里用的就是SDWebImage
,你這一更新豈不是讓我們多做很多事。
我們喜歡這樣的調用
[self.avImageViewW8 dc_setImageAvatarWithGroupId:@"avImageViewW8" Source:_groupNum8];
直接show!!!初版調用請查看
顯然網絡加載部分不能丟棄,如果可以設計的一步到位用著才舒服。
3:最終結局方案
我們兩種方案都提供,我們在框架的設計上提供一個subspec讓用戶自己去選擇。默認網絡加載一體的,如果用戶想自己管理加載部分的邏輯可以這樣。兩種集成方案如下
pod
CDDGroupAvatar/NoCache
無網絡依賴純UIpod
CDDGroupAvatar
UI+Network
如果是純代碼的話:請到框架目錄中查看
image
根據文件夾名拖拽。
這樣以上兩種需求即可都滿足,更多案例和框架源碼請下載查看!
地址:
Github : CDDGroupAvatar