Comment faire une image animé en Swift ?

Comment faire une image animé en Swift ?

Publiée le 26/05/2019 dans Développement

Vous souhaitez faire une image de chargement sur votre application ? Il est impossible d'afficher une image GIF dans nos applications. Il faut décomposer votre animation en plusieurs images, et grâce à une UIimageView, on peut faire une animation en quelques lignes.

On utilise trois variables, UIImageView, et deux valeurs CGFloat pour récupérer la hauteur et la largeur du device :

private var animatedImageView = UIImageView()
private var screenwidth: CGFloat = 0.0
private var screenheight: CGFloat = 0.0

On récupère les données de la largeur et de la hauteur de l'écran de l'écran :

screenwidth = UIScreen.main.bounds.size.width // Largeur
screenheight = UIScreen.main.bounds.size.height // Hauteur

On nomme 3 images (gif1,gif2 et gif3) qu'on rajoute dans le dossier des Assets :

UIImage(named: "gif1")
UIImage(named: "gif2")
UIImage(named: "gif3")

La fonction animationDuration de l'UIImageView animatedImageView permet de passer à l'image suivante toutes les x secondes. Le code source ci-dessous permet d'afficher une image de 100*100px à une seconde d'intervalle au milieu de l'écran.

let gifwidth: CGFloat = 100
let gifheight: CGFloat = 100
let gifleft: CGFloat = (self.screenwidth - gifwidth) / 2
let giftop: CGFloat = ((self.screenheight - 120) - gifheight) / 2

self.animatedImageView = UIImageView(frame: CGRect(x: gifleft, y: giftop, width: gifwidth, height: gifheight))
self.animatedImageView.animationImages = [UIImage(named: "gif1")!, UIImage(named: "gif2")!, UIImage(named: "gif3")!]
self.animatedImageView.animationDuration = 1.0
self.animatedImageView.animationRepeatCount = 0
self.view.addSubview(self.animatedImageView)

Pour démarrer l'animation :

self.animatedImageView.startAnimating()

Pour stopper l'animation :

self.animatedImageView.stopAnimating()

Pour supprimer l'animation de la superview (self.view étant parent à animatedImageView) :

self.animatedImageView.removeFromSuperview()

swift   animation