如何在iOS中异步下载图片? [英] How to asynchronously download images in ios?

查看:183
本文介绍了如何在iOS中异步下载图片?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想先在滚动视图上创建imageview.我设置了占位符图像或指定imageview的背景色.因此将显示所有图像视图.

I want to first create imageview onto the scroll view.there i set placeholder image or give Background color of imageview.so all image view are display.

- (void)LoadDataInScrollView
{
    dispatch_queue_t imageQueue = dispatch_queue_create("Image Queue",NULL);

    //totalImageGetDict into count total Number of object and generate imageview.

    for (int ivalue = 0; ivalue < [totalImageGetDict count]; ivalue++) 
    {
        dispatch_async(imageQueue, ^{

            //define x value
            CGFloat xOrigin =ivalue *ascrollView.frame.size.width+50;

            imageView = [[UIImageView alloc] init];
            imageView.tag = ivalue;
            [imageView setBackgroundColor:[UIColor whiteColor]];
            imageView.frame = CGRectMake(xOrigin-40,imgYpos, ascrollView.frame.size.width-20, scrollViewHight);

            //then here first i set already downloaded image.it's comes from another class. getImageLoadDict into images are already downloaded**

            if ([getImageLoadDict objectForKey:[NSNumber numberWithInteger:ivalue]]!= nil)   
            {
                //dispatch_async(dispatch_get_main_queue(), ^{
                [imageView setImage:[getImageLoadDict objectForKey:[NSNumber numberWithInteger:ivalue]]];
                //});

            } 
            else 
            {
                //totalImageGetDict into remaining images object and asynchronously download here.

                STVisionPhoto *photoObj = [totalImageGetDict objectForKey:[NSNumber numberWithInteger:ivalue]];
                UIImage *newimage = [photoObj image];

                dispatch_async(dispatch_get_main_queue(), ^{
                    [imageView setImage:newimage];
                });
           }

           [ascrollView addSubview:imageView];
        });
    }
}

推荐答案

您可以使用 SDWebImage 它.它很容易使用

You can use SDWebImage to do it.It is pretty easy to use

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    UIImage * image = [UIImage imageWithData:[NSData dataWithContentsOfURL:your url]];

    dispatch_async(dispatch_get_main_queue(), ^{
        [imgview setImage:image];
    });
});

如果您不想使用任何库,可以尝试一下

You can try this if you don't want to use any library

这篇关于如何在iOS中异步下载图片?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆