失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 模仿SDWebImage实现异步加载图片

模仿SDWebImage实现异步加载图片

时间:2019-03-06 06:04:28

相关推荐

模仿SDWebImage实现异步加载图片

模仿SDWebImage实现异步加载图片

SDWebImage想必大家都不陌生吧,要实现它的图片异步加载功能这个还是很简单的.

注意:此处我只实现了异步加载图片,并没有将文件缓存到本地的打算哦:)

源码:

UIImageView+YXImageView.h

//// UIImageView+YXImageView.h// PicDemo//// Copyright (c) Y.X. All rights reserved.//#import <UIKit/UIKit.h>@interface UIImageView (YXImageView)- (void)setImageWithURL:(NSString *)url placeholderImage:(UIImage *)placeholder;@end

UIImageView+YXImageView.m

//// UIImageView+YXImageView.m// PicDemo//// Copyright (c) Y.X. All rights reserved.//#import "UIImageView+YXImageView.h"@implementation UIImageView (YXImageView)- (void)setImageWithURL:(NSString *)url placeholderImage:(UIImage *)placeholder{// 先设置placeholderself.image = placeholder;// 异步下载完了之后再加载新的图片if (url){// 子线程下载dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:url]];NSData *data= [NSURLConnection sendSynchronousRequest:requestreturningResponse:nilerror:nil];// 主线程更新dispatch_async(dispatch_get_main_queue(), ^{if (data){self.image = [UIImage imageWithData:data];[self setNeedsDisplay];}});});}}@end

使用的源码:

RootViewController.m

//// RootViewController.m// PicDemo//// Copyright (c) Y.X. All rights reserved.//#import "RootViewController.h"#import "UIImageView+YXImageView.h"@interface RootViewController ()@end@implementation RootViewController- (void)viewDidLoad{[super viewDidLoad];UIImageView *imageView = [[UIImageView alloc] initWithFrame:self.view.bounds];[self.view addSubview:imageView];[imageView setImageWithURL:@"/avatar/572952/0226185251.png"placeholderImage:[UIImage imageNamed:@"1.png"]];}@end

核心代码:

GCD部分就不讲解了,关键的一步是需要重绘view本身,这个涨知识了:)

除了下载图片,你还可以做其他操作呢:)

如果觉得《模仿SDWebImage实现异步加载图片》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。