Fade/dissolve when changing UIImageView's image Fade/dissolve when changing UIImageView's image ios ios

Fade/dissolve when changing UIImageView's image


It can be much simpler using the new block-based, UIKit animation methods.

Suppose the following code is in the view controller, and the UIImageView you want to cross-dissolve is a subview of self.view addressable via the property self.imageView Then all you need is:

UIImage * toImage = [UIImage imageNamed:@"myname.png"];[UIView transitionWithView:self.imageView        duration:5.0f        options:UIViewAnimationOptionTransitionCrossDissolve        animations:^{  self.imageView.image = toImage;} completion:nil]

Done.

And to do it in Swift, it's like so:

let toImage = UIImage(named:"myname.png")UIView.transitionWithView(self.imageView,                          duration:5,                          options: UIViewAnimationOptions.TransitionCrossDissolve, animations: { self.imageView.image = toImage }, completion: nil)

Swift 3, 4 & 5

let toImage = UIImage(named:"myname.png")UIView.transition(with: self.imageView,                  duration: 0.3,                  options: .transitionCrossDissolve,                  animations: { self.imageView.image = toImage },                  completion: nil)


Edit: there is a better solution from @algal below.

Another way to do this is by using predefined CAAnimation transitions:

CATransition *transition = [CATransition animation];transition.duration = 0.25;transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];transition.type = kCATransitionFade;transition.delegate = self;[self.view.layer addAnimation:transition forKey:nil];view1.hidden = YES;view2.hidden = NO;

See the View Transitions example project from Apple: https://developer.apple.com/library/content/samplecode/ViewTransitions/Introduction/Intro.html#//apple_ref/doc/uid/DTS40007411


For Swift 3.0.1 :

UIView.transition(with: self.imageView,              duration:0.5,              options: .transitionCrossDissolve,              animations: { self.imageView.image = newImage },              completion: nil)

Reference: https://gist.github.com/licvido/bc22343cacfa3a8ccf88