您的位置:首页 > 移动开发 > IOS开发

iOS多图片下载

2016-06-08 23:14 357 查看
iOS多图片下载、在cell里面下载图片、做了缓存优化。

(app.icon是图片地址)


// 先从内存缓存中取出图片
UIImage *image = self.images[app.icon];
if (image) { // 内存中有图片
cell.imageView.image = image;
} else {  // 内存中没有图片
// 获得Library/Caches文件夹
NSString *cachesPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject];
// 获得文件名
NSString *filename = [app.icon lastPathComponent];
// 计算出文件的全路径
NSString *file = [cachesPath stringByAppendingPathComponent:filename];
// 加载沙盒的文件数据
NSData *data = [NSData dataWithContentsOfFile:file];

if (data) { // 直接利用沙盒中图片
UIImage *image = [UIImage imageWithData:data];
cell.imageView.image = image;
// 存到字典中
self.images[app.icon] = image;
} else { // 下载图片
[self.queue addOperationWithBlock:^{
// 下载图片、多线程
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:app.icon]];
UIImage *image = [UIImage imageWithData:data];

[NSThread sleepForTimeInterval:1.0];

// 回到主线程显示图片
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
cell.imageView.image = image;
}];

// 存到字典中
self.images[app.icon] = image;
// 将图片文件数据写入沙盒中
[data writeToFile:file atomically:YES];
}];
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: