图片异步加载之EGOImageLoading

上次在《iOS学习笔记46——图片异步加载之SDWebImage》中介绍过一个开源的图片异步加载库,今天来介绍另外一个功能类似的EGOImageLoading,看名字知道,之前的一篇学习笔记《IOS学习笔记34—EGOTableViewPullRefresh实现下拉刷新》中介绍的开源项目是同一个作者。和SDWebImage不同,EGOImageLoading是实现了一个自定义的EGOImageView,使用上和UIImageView非常类似,同时也实现了自动缓存和缓存手动清理的功能。SDWebImage是在UIImageView中添加了一个类别,使用起来好像是使用自带的方法一样,而EGOImageView就完全是一个自定义实现的图片加载组件。这是Github的项目地址:https://github.com/enormego/EGOImageLoading


一、配置工程

到Github页面clone下项目后,里面有个Demo工程,可以自行运行下看看,然后将下载包中的EGOImageLoading拖拽到自己的工程中,并选中Copy····拷贝到项目后确定。这时可以Command+B编译一下,如果工程使用了ARC那么会报错,这时选中工程并选择Biuld Pases,为Compile Sources下的EGO开头的文件加上配置-fno-objc-arc(如图)


这时再Command+B就会看到编译通过了,这就说明项目集成成功了!


二、基本使用

使用起来也很简单,我们这个Demo来实现一个自定义Cell的UITableView列表并异步加载每个Cell的图片显示,单击每个Cell进入子页面并显示单独的图片。

首先我们需要实现一个继承UITableViewCell的自定义cell,头文件如下,声明一个EGOImageView用于显示图片,一个UILabel用于显示该图片的URL:

[cpp]  view plain copy
  1. #import <UIKit/UIKit.h>  
  2. #import "EGOImageView.h"  
  3.   
  4. @interface ImageCell : UITableViewCell  
  5. {  
  6. @private  
  7.     EGOImageView *egoImageView;  
  8.     UILabel *label;  
  9. }  
  10. //在- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 中调用为图片组件加载图片显示  
  11. -(void)setImageWithURL:(NSString *)imageURL;  
  12. @end  

在.m文件中我们初始化这两个组件并实现setImageWithURL:方法:

[cpp]  view plain copy
  1. #import "ImageCell.h"  
  2.   
  3. @implementation ImageCell  
  4.   
  5. - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier  
  6. {  
  7.     self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];  
  8.     if (self) {  
  9.         egoImageView = [[EGOImageView alloc] initWithPlaceholderImage:[UIImage imageNamed:@"placeholder.png"]];  
  10.         egoImageView.frame = CGRectMake(5, 5, 65, 65);  
  11.         [self.contentView addSubview:egoImageView];  
  12.         label = [[UILabel alloc] initWithFrame:CGRectMake(78, 20, 220, 30)];  
  13.         label.textColor = [UIColor blackColor];  
  14.         [self.contentView addSubview:label];  
  15.     }  
  16.     return self;  
  17. }  
  18.   
  19. -(void)setImageWithURL:(NSString *)imageURL  
  20. {  
  21.     [egoImageView setImageURL:[NSURL URLWithString:imageURL]];  
  22.     label.text = imageURL;  
  23. }  

其中EGOImageView初始化方法中的palaceholder是还没加载完或加载失败时显示的占位图。到这里自定义的UITableViewCell就实现完了,接着到UITableViewController中实现页面展示和功能(关键代码):

[cpp]  view plain copy
  1. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath  
  2. {  
  3.     static NSString *CellIdentifier = @"Cell";  
  4.     ImageCell *cell = (ImageCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];  
  5.     if (cell == nil) {  
  6.         cell = [[ImageCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];  
  7.     }  
  8.       
  9.     //imgURLs为存储图片URL地址的NSArray数组  
  10.     [cell setImageWithURL:[imgURLs objectAtIndex:indexPath.row]];  
  11.       
  12.     cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;  
  13.       
  14.     return cell;  
  15. }  

我们可以看到,调用自定义的ImageCell中的setImageWithURL:方法即完成了对图片的异步加载,是不是很简单,另外,使用EGOCaceh也可以实现对缓存的释放:

[cpp]  view plain copy
  1. //清理缓存  
  2. -(void)clearCacheButton  
  3. {  
  4.     [[EGOCache currentCache] clearCache];  
  5.     [self.tableView reloadData];  
  6. }  

最后让我们来看看Demo的效果:

                      

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值