class SampleViewController: UIViewController {
@IBOutlet weak var imageView: UIImageView!
var images: [UIImage] = [
UIImage(named: "sample_img1"),
UIImage(named: "sample_img2"),
UIImage(named: "sample_img3")
]
let index = 0
let animationDuration: TimeInterval = 1
let switchingInterval: TimeInterval = 3
override func viewDidLoad() {
super.viewDidLoad()
imageView.image = images[index]
animateImageView()
}
// 画像をフェードで切り替えるアニメーション
func animateImageView() {
CATransaction.begin()
CATransaction.setAnimationDuration(animationDuration)
CATransaction.setCompletionBlock {
DispatchQueue.main.asyncAfter(deadline: .now() + self.switchingInterval) {
self.animateImageView()
}
}
let transition = CATransition()
transition.type = kCATransitionFade
brandImageImageView.layer.add(transition, forKey: kCATransition)
brandImageImageView.image = brandImages[nextBrandImagesIndex]
CATransaction.commit()
nextBrandImagesIndex = nextBrandImagesIndex < brandImages.count - 1 ? nextBrandImagesIndex + 1 : 0
}
}
参考: stackoverflow「Adding Image Transition Animation in Swift」