前言:
去年我开源一个群头像框架CDDGroupAvatar,在第一个版本上传GitHub之后引发了一个思考。我的框架默认是集成SDWebImage
有默认依赖啊,这个问题的处理就这这次版本的更新所要解决核心问题。
1:SDWebImage?可以除去依赖么
用户1说:我的项目没有用SDWebImage
,我们用的是YYWebImage
那岂不是我用了你写的框架就存在两个图片加载框架,我不喜欢?框架过载了
解决方案:在之前的版本中是存在这个问题,怎么处理框架设计的时候稍微改动一下就可以,我们可以去掉SDWebImage
让CDDGroupAvatar
成为一个纯UI框架,加载交给用户,我们负责根Type生成布局就行。
- 头文件代码如下
/**
设置群头像
@param groupId 群头像id
@param groupSource 群头像数据源数组
*/
- (void)dc_setNoCacheImageAvatarWithGroupId:(NSString *)groupId Source:(NSArray *)groupSource;
/**
设置群头像
@param groupId 群头像id
@param groupSource 群头像数据源数组
@param completedBlock *itemImageArray, NSString *cacheId>
*/
- (void)dc_setNoCacheImageAvatarWithGroupId:(NSString *)groupId Source:(NSArray *)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
如果是纯代码的话:请到框架目录中查看
根据文件夹名拖拽。
这样以上两种需求即可都满足,更多案例和框架源码请下载查看!
地址:
Github : CDDGroupAvatar