[英]Downloading Images Asynchronously
我正在使用給定代碼從其相應的URL下載圖像,但是由於某些問題,它無法正常工作,並且我無法診斷出問題。 請幫我解決這個問題。 提前致謝。
-(void)createScrollViewControls
{
[self removeAllControlsFromScrollView];
totalNumberOfImages=[arrImages count];
__block int x=0;
__block int y=0;
__block int scroll=0;
__block UIImage *tempimag=nil;
if(totalNumberOfImages>0) //If product images are there
{
// imageScroll.contentSize=CGSizeMake(imageScroll.frame.size.width*totalNumberOfImages, IMAGEHEIGHT);
for(int i=0;i<totalNumberOfImages;i++){
NSLog(@"Value=%@",arrImages);
UIActivityIndicatorView *activity= [[UIActivityIndicatorView alloc]initWithFrame:CGRectMake(77+scroll, 38, 30, 30)];
[activity setBackgroundColor:[UIColor clearColor]];
[activity setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleGray];
[imageScroll addSubview:activity];
[activity startAnimating];
dispatch_queue_t concurrentQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(concurrentQueue, ^{
NSURL *imageURL=[NSURL URLWithString:[arrImages objectAtIndex:i]];
NSData *tempData=[NSData dataWithContentsOfURL:imageURL];
UIImage *tImage=[UIImage imageWithData:tempData];
if (tImage==nil)
{
tImage=[UIImage imageNamed:@"NoImage.png"];
}
dispatch_async(dispatch_get_main_queue(), ^{
tempimag= tImage;
UIImageView *imageView=[[UIImageView alloc] initWithFrame:CGRectMake(x, y, IMAGEWIDTH, IMAGEHEIGHT)];
//if url is there but image not getting downloaded then show a static image
if (!tempimag)
{
imageScroll.contentSize=CGSizeMake(imageView.frame.size.width, IMAGEHEIGHT);
NSLog(@"no underlying data");
imageView.image = [UIImage imageNamed:kNoImageAvailable];
[imageScroll addSubview:imageView];
// totalNumberOfImages = 0;
}
else{
[activity stopAnimating];
imageScroll.contentSize=CGSizeMake(imageScroll.frame.size.width*totalNumberOfImages, IMAGEHEIGHT);
imageView.image=tempimag;
[imageScroll addSubview:imageView];
x=x+imageScroll.frame.size.width;
}
});
});
/*
UIImageView *imageView=[[UIImageView alloc] initWithFrame:CGRectMake(x, y, IMAGEWIDTH, IMAGEHEIGHT)];
if (!tempimag)//if url is there but image not getting downloaded then show a static image
{
imageScroll.contentSize=CGSizeMake(imageView.frame.size.width, IMAGEHEIGHT);
NSLog(@"no underlying data");
imageView.image = [UIImage imageNamed:kNoImageAvailable];
[imageScroll addSubview:imageView];
totalNumberOfImages = 0;
break;
}
else{
imageScroll.contentSize=CGSizeMake(imageScroll.frame.size.width*totalNumberOfImages, IMAGEHEIGHT);
imageView.image=tempimag;
[imageScroll addSubview:imageView];
x=x+imageScroll.frame.size.width;
}
} */
scroll+=184;
}
}
下面的代碼行:
if (tImage==nil)
{
tImage=[UIImage imageNamed:@"NoImage.png"];
}
將始終使您的程序控制權轉到:
if (!tempimag)
{
imageScroll.contentSize=CGSizeMake(imageView.frame.size.width, IMAGEHEIGHT);
NSLog(@"no underlying data");
imageView.image = [UIImage imageNamed:kNoImageAvailable];
[imageScroll addSubview:imageView];
// totalNumberOfImages = 0;
}
請刪除提到的代碼的第一部分,然后嘗試一下。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.