I've been using SDWebImage on my iPhone app to handle all of the image loading. I am using a placeholder image, and I want to crossfade or fade in the new image once it loads. I am using a success block to set the image, and it is working great. No matter what I try, the image will not fade in though. I've tried sending the animation code back to the main thread, but that didn't help either. It just loads instantly... No animation.
Here is my code. Any thoughts?
// load placeholder image
NSURL *url = ...
_imageView = [[UIImageView alloc] init];
[_imageView setImage:[UIImage imageNamed:@"loading.jpg"]];
// request image
SDWebImageManager *manager = [SDWebImageManager sharedManager];
[manager downloadWithURL:url
delegate:self
options:0
success:^(UIImage *image) {
[UIView transitionWithView:_imageView
duration:3.0
options:UIViewAnimationOptionTransitionCrossDissolve
animations:^{
[_imageView setImage:image];
} completion:NULL];
}
failure:nil];
This extension code worked better for me.
Try out this:
SWIFT:
For SWIFT, i created this extension. It only fades in, when the image actually had to be downloaded from the web. If it was served from the cache, then it won't fade.
Here is the code which help me out and working great.
This is Swift 4 version of @Zoltan Varadi answer:
I changed the duration to 0.3
You can add this function to the extension in order you need the completionHandler block: