2015-10-17 29 views
-1

我想从URL的图像和我这样做:UIImage的异步没有加载

for(int i = 0; i < 50; i++) 
{NSString *MyURL=[NSString stringWithFormat:@"http://*********/tatoo/%@/%@%d.png" ,@"b",@"b",i+1]; 


    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul); 
    dispatch_async(queue, ^(void) { 
     NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:MyURL]]; 

          UIImage* image = [[UIImage alloc] initWithData:imageData]; 
          if (image) { 
           dispatch_async(dispatch_get_main_queue(), ^{ 
            [tmp addObject:image]; 
           }); 
          } 
          }); 

} 

images = [[NSArray alloc]initWithArray:tmp]; 

链接的Valide,但TMP是空的。任何ideea这里有什么问题?任何帮助将不胜感激!

+0

空当?显示代码 – Wain

+0

@当我想添加到图像阵列时,请将空置为 –

回答

1

您可以使用AsyncImageView加载图像,而不会影响您的用户界面。

下载第三方类从 https://github.com/nicklockwood/AsyncImageView

AsyncImageView *storeImage = [[AsyncImageView alloc]init]; 

//This will load any no logo image first. If url is dead then also it will work 
    storeImage.image =[UIImage imageNamed:@"no-logo.png"]; 


    NSString *UrlSTR = @"ANY_IMAGE_URL"; 
    NSURL *imageURL = [NSURL URLWithString:UrlSTR]; 
    storeImage.contentMode = UIViewContentModeScaleAspectFit; 
    storeImage.imageURL = imageURL; 

这将载入图片的背景。

+0

我做了你所说的,但来自url的图像未加载。我用这个来添加我的数组中的图像。 [tmp addObject:storeImage.image];没关系? –

+0

没有上面的代码会直接将图像添加到imageview – Prakash

+0

好吧,以及如何将图像添加到数组? –

0

异步下载尚未完成,您需要等待它们。

使用操作队列或调度组等待,直到它们全部完成,然后可以使用该数组。

请注意,由于您不知道每次下载将花费多长时间,因此无法保证阵列中图像的任何顺序。另外,最好不要同时启动60个下载...

0

您是否在添加图像数据之前初始化了tmp?前

tmp =[NSArray alloc]init]; 

初始化循环