我想动画多个UIImageViews.Image上的图像是来自服务器端的网址,所以我请求网址,并将其转换为图像,我给动画uiimageview即交叉溶解,一个问题是发生了图像引用是改变在UIImageView中意味着它是第一次显示不同的图像,当我滚动,然后其他图像显示同一个UIImageView.This上的问题将只发生第一次,因为我维护imagecache.Any的想法关于这个bahavious?下面是我使用的代码。
-(void)requestForImage:(NSString*)strURL{
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
NSURLRequest *request;
NSString * newImageURL = [strURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
request = [NSURLRequest requestWithURL:[NSURL URLWithString:newImageURL]];
[NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error)
{
UIImage *image = [UIImage imageWithData:data];
if ([data length] > 0 && error == nil && image) //If success
{
//receive data
[[myImage sharedMyclass] setImage:image withKey:strURL];
dispatch_queue_t queue_ = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);
dispatch_async(queue_, ^{
UIImage *image = [[myImage sharedMyclass] imageForURL:strURL]; //That return image from particular path
[self performSelectorOnMainThread:@selector(receivedImage:) withObject:image waitUntilDone:NO];
[data writeToFile:[[NSUserDefaults standardUserDefaults] valueForKey:strURL] atomically:YES];
dispatch_sync(dispatch_get_main_queue(), ^{
[UIView transitionWithView:self
duration:2.0
options: UIViewAnimationOptionTransitionCrossDissolve|UIViewAnimationOptionAllowUserInteraction
animations:^{
self.image = image;
}
completion:NULL];
self.contentMode = UIViewContentModeScaleAspectFit;
});
});
}
}];
}发布于 2013-12-26 01:11:27
当你调用这个函数时,编译器会检查代码,然后机器就会进行检查。
这意味着对系统任务列表中写入的所有任务执行=>,但没有人能向您保证将首先完成其中的哪一个。
我的建议是,将其分成几个小函数,然后调用第一个函数self perform...,然后在每个函数完成部分中创建一个块,并在该块中将图片分配到数组中,然后调用下一个函数(下一个所需的图片)。
这就是只要当前请求完成,就不会分配其他图片的方式。
https://stackoverflow.com/questions/18350823
复制相似问题