iOS 异步线程下载图片

2018-01-10  本文已影响324人  YannChee

项目中有一处使用了第三方的图片服务器,当加载列表时,加载图片略缩图,点击略缩图后查看原图,

需求比较简单,就不使用第三方库,直接用GCD实现了

- (void)setupWebImage {
    [SVProgressHUD showWithStatus:@"正在加载..."];
    //
    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    dispatch_async(queue, ^{
        // 下载图片
        if (!self.imgUrl) { return ;}
        NSData *imgData = [NSData dataWithContentsOfURL:self.imgUrl];
        //
        if (imgData) {
            dispatch_queue_t mainQueue = dispatch_get_main_queue();
            dispatch_async(mainQueue, ^{
                UIImage *img = [UIImage imageWithData:imgData];
                if (img.size.width > SCREEN_WIDTH || img.size.height > SCREEN_HEIGHT) { // 图片宽高超出
                    self.exampleImgV.size = self.view.size;
                } else { // 图片宽高未超出显示原图大小
                    self.exampleImgV.size = img.size;
                }
                self.exampleImgV.center = self.view.center;
                self.exampleImgV.image = img;
                 [SVProgressHUD dismiss];
            });
        } else {
            dispatch_queue_t mainQueue = dispatch_get_main_queue();
            dispatch_async(mainQueue, ^{
                [SVProgressHUD qy_showErrorWithStatus:@"加载失败\n请稍后重试..."];
            });
        }
    });
}
上一篇下一篇

猜你喜欢

热点阅读