SDWebImage, 关于第三方异步加载图片的一些方法
1.首先将第三方文件(SDWebImage)添加到工程里
2.修改ARC
3.在viewControl中添加一个imageView, 添加一个tap点击手势, 用来展示下载的图片
a. sd_setImageWithURL
引入头文件
#import "UIImageView+WebCache.h"
- (IBAction)tap:(UITapGestureRecognizer *)sender { NSLog(@"%s", __FUNCTION__); //异步加载图片 [self.imageView sd_setImageWithURL:[NSURL URLWithString:@"http://img3.douban.com/view/photo/photo/public/p1910869260.jpg"] placeholderImage:nil options:0];}
b. SDWebImageManager
引入头文件
#import "SDWebImageManager.h"
- (IBAction)tap:(UITapGestureRecognizer *)sender { NSLog(@"%s", __FUNCTION__); //异步加载图片 SDWebImageManager *manager = [SDWebImageManager sharedManager]; [manager downloadImageWithURL:[NSURL URLWithString:@"http://img3.douban.com/view/photo/photo/public/p2151245053.jpg"] options:0 progress:^(NSInteger receivedSize, NSInteger expectedSize) { } completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) { if (finished) { self.imageView.image = image; } }]; }
c. SDWebImageDownloader 独立使用异步图片下载
引入头文件
#import "SDWebImageDownloader.h"
SDWebImageDownloader *downloader = [SDWebImageDownloader sharedDownloader]; [downloader downloadImageWithURL:[NSURL URLWithString:@"http://img4.douban.com/view/photo/photo/public/p1940511226.jpg"] options:0 progress:^(NSInteger receivedSize, NSInteger expectedSize) { } completed:^(UIImage *image, NSData *data, NSError *error, BOOL finished) { if (finished) { self.imageView.image = image; } }];
d. SDImageCache
缓存图片, 以key值来标记图片, 提取图片, 下次要使用时能快速提取使用图片
引入头文件
#import "UIImageView+WebCache.h"
- (IBAction)tap:(UITapGestureRecognizer *)sender { NSLog(@"%s", __FUNCTION__); //SDImageCache单例方法 [[SDImageCache sharedImageCache] storeImage:[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://img3.doubanio.com/view/photo/photo/public/p522751329.jpg"]]] forKey:@"mySpace"]; //queryDiskCacheForKey, 通过key值, 查找缓存的图片 [[SDImageCache sharedImageCache] queryDiskCacheForKey:@"mySpace" done:^(UIImage *image, SDImageCacheType cacheType) { self.imageView.image = image; }]; } 再次使用图片时不需要再下载, 直接从缓存里提取 - (IBAction)other:(UITapGestureRecognizer *)sender { NSLog(@"other"); [[SDImageCache sharedImageCache] queryDiskCacheForKey:@"mySpace" done:^(UIImage *image, SDImageCacheType cacheType) { self.otherImage.image = image; }]; }
点击imageView将图片缓存用"mySpace"标志缓存, 并将其显示出来, 再点击另一个view将这张图片用"mySpace"标志从缓存中提取出来, 不用重新下载, 能快速的展现出来
时间: 2024-10-13 20:43:22