[iOS]下载网络图片到相册

[iOS]下载网络图片到相册

产品新增了一个需求,要求在图组页面添加下载功能。
因为之前已经使用SDWebImage加载图片,本想这里偷个懒直接保存加载出的image到相册。但后来发现,没法判断UIImageView展示的图片是加载的网络图片还是自己设置的缺省图,不要图片加载失败却让用户保存一张缺省图。

后来用了这种方式,点击下载时,拿到了图片路径就重新new一个ImageView来加载图片。因为加载过的图片会存在缓存,所以不用考虑图片重复加载问题。

#import "GARenderViewController.h"
#import "UIImageView+WebCache.h"

@interface GARenderViewController ()
@property (assign, nonatomic) NSInteger limitDownOnce;

@end

@implementation GARenderViewController

// 下载图片
- (void)uploadImageAction:(NSString *)imgPath {
    if (_limitDownOnce) {
        return;
    } else {
        _limitDownOnce = 1;
    }
    UIImageView *tempIV = [UIImageView new];
    [tempIV sd_setImageWithURL:[NSURL URLWithString:imgPath] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
        if (image) {
            // 保存图片
            UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);
        }
    }];               
}

- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo {
    _limitDownOnce = 0;
    NSString *alertString;
    if (error) {
        alertString = @"图片下载失败";
    } else {
        alertString = @"图片下载成功";
    }
    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示" message:alertString preferredStyle:UIAlertControllerStyleAlert];
    UIAlertAction *action = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleCancel handler:nil];
    [alert addAction:action];
    [self presentViewController:alert animated:YES completion:nil];
}

@end



展开阅读全文

没有更多推荐了,返回首页