J'ai un aperçu d'image sous-classé que j'aimerais faire apparaître en fondu, mettre à l'échelle et faire tourner, puis continuer à tourner tout en réduisant l'échelle et en disparaissant en fondu.
J'utilise un bloc UIView animate avec un gestionnaire d'achèvement pour gérer le rétrécissement.
Le problème est que ce n'est pas une animation fluide. Avant que le gestionnaire d'achèvement ne s'exécute, l'animation s'arrête avant de se relancer. J'ai besoin d'une belle animation en un seul mouvement.
Code ci-dessous :
let duration: TimeInterval = 3.0
let rotate = CGAffineTransform(rotationAngle: CGFloat(Double.pi))
UIView.animate(withDuration: duration * 3, delay: 0, options: [.curveLinear], animations: {
// initial transform
self.alpha = 0
self.transform = CGAffineTransform(scaleX: 0.1, y: 0.1)
// initial spin for duration of animaton
UIView.animate(withDuration: duration * 3, delay: 0.0, options: [.curveLinear], animations: {
self.transform = rotate
}, completion: nil)
// scaling and fading
UIView.animate(withDuration: duration, delay: 0, options: [.curveLinear], animations: {
UIView.setAnimationRepeatCount(3)
self.transform = self.transform.scaledBy(x: 0.8, y: 0.8)
self.alpha = 1
}) { (true) in
UIView.animate(withDuration: duration, animations: {
UIView.setAnimationRepeatCount(3)
self.transform = self.transform.scaledBy(x: 0.1, y: 0.1)
self.alpha = 0
})
}
}, completion: nil)
Comment faire pour que l'animation tourne pendant tout ce temps tout en faisant un fondu et en augmentant l'échelle avant de la réduire et de la faire disparaître ? L'animation entière doit durer 3 secondes et se répéter 3 fois. Merci.