2017-10-20 22 views
2

J'ai écrit une simple chaîne d'animation avec deux animations utilisant UIView.animate, mais la deuxième animation dans le bloc d'achèvement ne commence pas exactement à partir de l'endroit où la première animation, donc j'ai un étrange déplacement vers la droite. Quelqu'un pourrait-il aider? Peut-être que je n'ai pas entièrement compris la propriété tranfrorm.UIView animation dans le bloc d'achèvement commence par déplacement

UIView.animate(withDuration: 3, animations: { 
    self.redView.transform = self.redView.transform.translatedBy(x: 100, y: 0) 
}) { (_) in 
    UIView.animate(withDuration: 2, animations: { 
     self.redView.transform = self.redView.transform.scaledBy(x: 2, y: 2) 
    }) 
} 

Mon redView devrait être déplacé à droite sur 100 et au même endroit est devenu deux fois plus grand. Mais avant la deuxième animation, il y a un déplacement vers la droite. Je n'ai aucune idée de la raison pour laquelle cela arrive. Merci!

gifs cette question:

enter image description here

+0

S'il vous plaît ajouter le code de méthode Animer . –

+0

@ParasGorasiya, il y a un code pour cette animation dans ma question –

Répondre

1

Je ne sais pas quel est votre intention, mais j'animer le cadre dans le premier bloc:

let initialFrame = redView.frame 
UIView.animate(withDuration: 3, animations: { 
    self.redView.frame = initialFrame.offsetBy(dx: 100, dy: 0) 
}) { (_) in 
    UIView.animate(withDuration: 2, animations: { 
     self.redView.transform = self.redView.transform.scaledBy(x: 2, y: 2) 
    }) 
} 
+0

Vraiment fonctionne. Merci! Mais peut-être savez-vous quelle est la différence entre une animation avec des cadres et une transformation? –

+0

Cela devrait répondre à votre question https://stackoverflow.com/a/16177717 –

+0

Merci. Maintenant c'est clair –