2

複数のUIImageViews.Imageで画像をアニメーション化したい.Imageはサーバー側からUrlを使用して送信されるため、URLをリクエストして画像に変換し、アニメーションをuiimageviewに渡します。異なる画像を表示し、スクロールすると同じUIImageViewに他の画像が表示されます。この問題は、画像キャッシュを維持しているため、初めて発生します。以下は私が使用したコードです。

-(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;
                 });
             });
         }

     }];
}
4

1 に答える 1