Iphone 异步下载图像
我正在使用给定的代码从其各自的url下载图像,但由于一些问题,它无法工作,我无法诊断问题。请帮我解决这个问题。 提前谢谢Iphone 异步下载图像,iphone,ios,asynchronous,xcode4.5,imagedownload,Iphone,Ios,Asynchronous,Xcode4.5,Imagedownload,我正在使用给定的代码从其各自的url下载图像,但由于一些问题,它无法工作,我无法诊断问题。请帮我解决这个问题。 提前谢谢 -(void)createScrollViewControls { [self removeAllControlsFromScrollView]; totalNumberOfImages=[arrImages count]; __block int x=0; __block int y=0; __block int s
-(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;
}
}
-(void)createScrollViewControls
{
[来自ScrollView的自移除所有控制];
totalNumberOfImages=[arrImages计数];
__块int x=0;
__块int y=0;
__块int滚动=0;
__块UIImage*tempimag=nil;
if(totalNumberOfImages>0)//如果有产品图像
{
//imageScroll.contentSize=CGSizeMake(imageScroll.frame.size.width*totalNumberOfImages,IMAGEHEIGHT);
对于(int i=0;i以下代码行:
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;
}
请删除前面提到的代码的第一部分并进行尝试。您的问题是什么?URL中有空白,因此产生了问题。其他明智的代码工作正常。我发现了问题并解决了它。感谢您的回复。