首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我向UIImageView提供动画时,为什么UIImage引用会改变?

问当我向UIImageView提供动画时,为什么UIImage引用会改变?
EN

Stack Overflow用户
提问于 2013-08-21 15:02:49
回答 1查看 167关注 0票数 2

我想动画多个UIImageViews.Image上的图像是来自服务器端的网址,所以我请求网址,并将其转换为图像,我给动画uiimageview即交叉溶解,一个问题是发生了图像引用是改变在UIImageView中意味着它是第一次显示不同的图像,当我滚动,然后其他图像显示同一个UIImageView.This上的问题将只发生第一次,因为我维护imagecache.Any的想法关于这个bahavious?下面是我使用的代码。

代码语言:javascript
复制
-(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;
                 });
             });
         }

     }];
}
EN

回答 1

Stack Overflow用户

发布于 2013-12-26 01:11:27

当你调用这个函数时,编译器会检查代码,然后机器就会进行检查。

这意味着对系统任务列表中写入的所有任务执行=>,但没有人能向您保证将首先完成其中的哪一个。

我的建议是,将其分成几个小函数,然后调用第一个函数self perform...,然后在每个函数完成部分中创建一个块,并在该块中将图片分配到数组中,然后调用下一个函数(下一个所需的图片)。

这就是只要当前请求完成,就不会分配其他图片的方式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18350823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档