一枚のUIImageViewで画像の入れ替えアニメーションを行う

コードは以下の通りです

let transition = CATransition()
transition.duration = 0.75
transition.type = kCATransitionFade

self.myImageView.image = UIImage(named: "image2.png")
self.myImageView.layer.add(transition, forKey: nil)

また以下のコードでアニメーションの終了タイミングを取得することができます

CATransaction.begin()
      
CATransaction.setCompletionBlock({ 
      // 終了時に呼ばれる
})
            
let transition = CATransition()
transition.duration = 0.75
transition.type = kCATransitionFade
self.thumbnailImage.image = UIImage(named: "image2.png")
self.thumbnailImage.layer.add(transition, forKey: nil)

CATransaction.commit()

delegateも用意されている

class Myclass {

  func startAnimation() {
      let transition = CATransition()
      transition.duration = 0.75
      transition.type = kCATransitionFade
      transition.delegate = self
      self.thumbnailImage.image = UIImage(named: "image2.png")
      self.thumbnailImage.layer.add(transition, forKey: nil)
  }

}
extension Myclass: CAAnimationDelegate {

 func animationDidStop(_ anim: CAAnimation, finished flag: Bool) {
        print("アニメーション終了")
 }