iOS多图片下载_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > iOS多图片下载

iOS多图片下载

 2016/6/9 5:31:16  鸿鹄当高远  程序员俱乐部  我要评论(0)
  • 摘要:iOS多图片下载、在cell里面下载图片、做了缓存优化。(app.icon是图片地址)//先从内存缓存中取出图片UIImage*image=self.images[app.icon];if(image){//内存中有图片cell.imageView.image=image;}else{//内存中没有图片//获得Library/Caches文件夹NSString*cachesPath=[NSSearchPathForDirectoriesInDomains(NSCachesDirectory
  • 标签:图片 iOS 下载

 

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];
            }];
     }

 

上一篇: 阿里机器人现身浙江法院庭审现场做笔录 下一篇: 没有下一篇了!
发表评论
用户名: 匿名