EGOImageLoading 是一个用的比较多的异步加载图片的第三方类库,简化开发过程,我们直接传入图片的url,这个类库就会自动帮我们异步加载和缓存工作;当从网上获取图片时,如果网速慢图片短时间内不能下载下来,可以先用一张本地的图片代替显示,还可以进行其他操作,让图片下载完成后自动替换占位图片而不影响用户体验;
首先还是来分析一下开源中国iOS客户端如何使用这个第三方类库
在我搜索客户端中哪些类使用了这个类库的时候和预期的并不一样,在工程中有很多地方需要使用到图片的异步加载,而使用EGOImageLoading类库加载只有三个地方,也可以说是两个地方
一是在显示个人资料加载个人图片,显示个人信息时候使用的。
二个是显示你的粉丝或者你关注的人,想查看TA的资料的时候
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISM4ETOxQjM3ETMzUDMzEDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
在MyView类和UserView2类中,使用方法一样
声明一个 EGOImageView管理图片的异步加载
1
<code>@property (strong,nonatomic) EGOImageView * egoImgView;</code>
在ViewDidLoad方法中
2
3
4
5
6
7
<code>// 初始化</code>
<code> </code><code>self.egoImgView = [[EGOImageView alloc] initWithFrame:CGRectMake(15, 4, 70, 70)];</code>
<code>// 占位图片</code>
<code> </code><code>self.egoImgView.image = [UIImage imageNamed:@</code><code>"big_avatar_loading.png"</code><code>];</code>
<code>// 设置图片圆角弧度</code>
<code> </code><code>egoImgView.layer.cornerRadius = 10.0f;</code>
<code> </code><code>[self.view addSubview:self.egoImgView];</code>
然后就是在reload()方法中图片加载处理,先从网络解析获取图片的url资源,如果未获取到图片url仍然显示占位图片,如果获取到了就将占位图片更换为解析获取的图片
8
9
10
<code>//头像</code>
<code>NSString *portrait_str = [TBXML textForElement:portrait];</code>
<code>if</code> <code>([portrait_str isEqualToString:@</code><code>""</code><code>])</code>
<code>{</code>
<code> </code><code>self.egoImgView.image = [UIImage imageNamed:@</code><code>"big_avatar.png"</code><code>];</code>
<code>}</code>
<code>else</code>
<code> </code><code>self.egoImgView.imageURL = [NSURL URLWithString:portrait_str];</code>
以上就是使用EGOImageLoading 类库进行图片的异步加载;
以下是一个使用EGOImageLoading 类库进行图片异步加载的示例Demo,下载见附件
在开源中国iOS 客户端的问答、动弹、我的三个视图也涉及到图片的显示加载问题,刚开始误以为使用EGOImageLoading 类库异步加载图片,而实际上是一个延迟加载,先用占位图片显示,然后使用IconDownloader类库从服务器端将图片下载到本地缓存,在进行加载显示;
本文转自新风作浪 51CTO博客,原文链接:http://blog.51cto.com/duxinfeng/1214170,如需转载请自行联系原作者