iOS图片的异步加载

一开始接触到图片的加载是使用SDWebImage这个三方库, 然后就养成了惰性, 工作中一碰到网络图片的加载, 就毫不犹豫的把SDWebImage拖进来, 其实由于工程的使用限制, 往往导入了一大堆三方库文件, 真是有价值的就那么一个函数. 

最近查看公司工程源码, 导入的三方库是在太多, 当然也包括SDWebImage, 同样我查了一下, 这个库的真正用途就那么一个异步加载图片的函数. 于是就决定自己封装一个异步加载网络图片的类别.

UIImageView+MHImageWebCache.h  就一个api:

@interface UIImageView (MHImageWebCache)

/*!
 *  @author Macro QQ:778165728, 15-10-14
 *
 *  @brief  加载网络图片
 *
 *  @param urlStr    网络图片地址
 *  @param imageName 未加载时的占位图片
 */
- (void)setWebImageWithUrlStr:(NSString *)urlStr placeholderImageName:(NSString *)imageName;

@end 

 实现原理也很简单, 先把占位图片赋给UIImageView, 然后用GCD创建一个新的线程来异步加载图片, 加载图片数据就用最简单方法, NSData的远程加载方法:

+ (nullable instancetype)dataWithContentsOfURL:(NSURL *)url; 
加载完成之后, 就通知主线程(UI线程)修改UI, 我之前没考虑这点, 图片加载很长时间才显示出来....

// 通知主线程更新UI
dispatch_async(dispatch_get_main_queue(), ^{
    self.image = [UIImage imageWithData:imageData];
}); 
这样图片数据加载完成, 就会马上更新到UI上了~

源码下载



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值