开源中国iOS客户端学习——(十四)使用EGOImageLoading异步加载图片

简介:

     EGOImageLoading 是一个用的比较多的异步加载图片的第三方类库,简化开发过程,我们直接传入图片的url,这个类库就会自动帮我们异步加载和缓存工作;当从网上获取图片时,如果网速慢图片短时间内不能下载下来,可以先用一张本地的图片代替显示,还可以进行其他操作,让图片下载完成后自动替换占位图片而不影响用户体验;


EGOImageLoading 的GitHub 下载地址  https://github.com/enormego/EGOImageLoading

GitHub上下载下来的类库会有一个Demo,如果运行出错说明缺少EGOCache类,在https://github.com/enormego/EGOCache添加道工程之中,或者直接在附件上下载


     首先还是来分析一下开源中国iOS客户端如何使用这个第三方类库

在我搜索客户端中哪些类使用了这个类库的时候和预期的并不一样,在工程中有很多地方需要使用到图片的异步加载,而使用EGOImageLoading类库加载只有三个地方,也可以说是两个地方

一是在显示个人资料加载个人图片,显示个人信息时候使用的。

二个是显示你的粉丝或者你关注的人,想查看TA的资料的时候



在MyView类和UserView2类中,使用方法一样

声明一个 EGOImageView管理图片的异步加载

1
@property (strong,nonatomic) EGOImageView * egoImgView;

在ViewDidLoad方法中



1
2
3
4
5
6
7
//    初始化
     self.egoImgView = [[EGOImageView alloc] initWithFrame:CGRectMake(15, 4, 70, 70)];
//    占位图片
     self.egoImgView.image = [UIImage imageNamed:@ "big_avatar_loading.png" ];
//    设置图片圆角弧度
     egoImgView.layer.cornerRadius = 10.0f;
     [self.view addSubview:self.egoImgView];


然后就是在reload()方法中图片加载处理,先从网络解析获取图片的url资源,如果未获取到图片url仍然显示占位图片,如果获取到了就将占位图片更换为解析获取的图片



1
2
3
4
5
6
7
8
9
10
//头像
NSString *portrait_str = [TBXML textForElement:portrait];
if  ([portrait_str isEqualToString:@ "" ])
{
     self.egoImgView.image = [UIImage imageNamed:@ "big_avatar.png" ];
}
else
{
     self.egoImgView.imageURL = [NSURL URLWithString:portrait_str];
}

以上就是使用EGOImageLoading 类库进行图片的异步加载;


以下是一个使用EGOImageLoading 类库进行图片异步加载的示例Demo,下载见附件





在开源中国iOS 客户端的问答、动弹、我的三个视图也涉及到图片的显示加载问题,刚开始误以为使用EGOImageLoading 类库异步加载图片,而实际上是一个延迟加载,先用占位图片显示,然后使用IconDownloader类库从服务器端将图片下载到本地缓存,在进行加载显示;





     本文转自新风作浪 51CTO博客,原文链接:http://blog.51cto.com/duxinfeng/1214170,如需转载请自行联系原作者





相关文章
|
存储 缓存 安全
基于iOS平台的高效图片缓存策略实现
【4月更文挑战第22天】 在移动应用开发中,图片资源的加载与缓存是影响用户体验的重要因素之一。尤其对于iOS平台,由于设备存储空间的限制以及用户对流畅性的高要求,设计一种合理的图片缓存策略显得尤为关键。本文将探讨在iOS环境下,如何通过使用先进的图片缓存技术,包括内存缓存、磁盘缓存以及网络请求的优化,来提高应用的性能和响应速度。我们将重点分析多级缓存机制的设计与实现,并对可能出现的问题及其解决方案进行讨论。
|
存储 缓存 编解码
实现iOS平台的高效图片缓存策略
【4月更文挑战第23天】在移动应用开发领域,尤其是图像处理密集型的iOS应用中,高效的图片缓存策略对于提升用户体验和节省系统资源至关重要。本文将探讨一种针对iOS平台设计的图片缓存方案,该方案通过结合内存缓存与磁盘缓存的多层次结构,旨在优化图片加载性能并降低内存占用。我们将深入分析其设计理念、核心组件以及在实际场景中的应用效果,同时对比其他常见缓存技术的优势与局限。
|
存储 Web App开发 Android开发
iOS不支持WebP格式图片解决方案和iPhone 7及其后硬件拍照的HEIC格式图片
iOS不支持WebP格式图片解决方案和iPhone 7及其后硬件拍照的HEIC格式图片
1851 1
iOS不支持WebP格式图片解决方案和iPhone 7及其后硬件拍照的HEIC格式图片
|
前端开发 开发工具 Swift
学习iOS开发的准备
准备学习iOS开发?确保有Mac和最新Xcode,先学好编程基础特别是Swift。利用Apple官方文档、在线课程和书籍作为资源。熟悉Xcode及Git,通过实践项目和开源代码积累经验。深研架构模式、核心框架和优化技巧。加入开发者社区,关注行业动态,持续学习。
283 1
按钮的image图片是非圆角,直接对UIButton设置圆角,iOS13系统没有圆角效果的问题及解决方案
按钮的image图片是非圆角,直接对UIButton设置圆角,iOS13系统没有圆角效果的问题及解决方案
253 0
|
移动开发 iOS开发 Perl
iOS客户端和h5页面的互相调用,服务器和客户端间通信方式
iOS客户端和h5页面的互相调用,服务器和客户端间通信方式
601 0
|
开发框架 前端开发 Android开发
安卓与iOS开发中的跨平台策略
在移动应用开发的战场上,安卓和iOS两大阵营各据一方。随着技术的演进,跨平台开发框架成为开发者的新宠,旨在实现一次编码、多平台部署的梦想。本文将探讨跨平台开发的优势与挑战,并分享实用的开发技巧,帮助开发者在安卓和iOS的世界中游刃有余。
|
iOS开发 开发者
uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决
uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决
1030 67
uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决
|
iOS开发 开发者 MacOS
深入探索iOS开发中的SwiftUI框架
【10月更文挑战第21天】 本文将带领读者深入了解Apple最新推出的SwiftUI框架,这一革命性的用户界面构建工具为iOS开发者提供了一种声明式、高效且直观的方式来创建复杂的用户界面。通过分析SwiftUI的核心概念、主要特性以及在实际项目中的应用示例,我们将展示如何利用SwiftUI简化UI代码,提高开发效率,并保持应用程序的高性能和响应性。无论你是iOS开发的新手还是有经验的开发者,本文都将为你提供宝贵的见解和实用的指导。
547 66
|
JavaScript 搜索推荐 Android开发
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
693 8
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡