Вы смешиваете анимацию CA и анимацию UIView.
Первая анимация - это CABasicAnimation
.UIView.animate
не распознает его, поэтому первая анимация «завершается» (что касается UIView.animate
) немедленно и вызывается завершение завершения.Теперь вы делаете еще одну UIView
анимацию.Но на самом деле первая анимация только начинается, поэтому вторая анимация вступает во владение, и вы видите только вторую.
Чтобы это исправить, вы должны переместить первую анимацию из блока UIView.animate
:
let animation:CABasicAnimation = CABasicAnimation(keyPath: "position")
animation.fromValue = NSValue(cgPoint:CGPoint(x: self.imgBackOfTheCard.frame.midX, y: 1200))
animation.toValue = NSValue(cgPoint:CGPoint(x: self.imgBackOfTheCard.frame.midX, y: self.imgBackOfTheCard.frame.midY))
animation.timingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeInEaseOut)
animation.duration = 1
self.imgBackOfTheCard.layer.add(animation, forKey: "position")
А затем подождите 1 секунду, затем выполните вторую анимацию:
DispatchQueue.main.asyncAfter(deadline: .now() + 1, execute: {
// do your second animation here.
})
При дальнейшей проверке первая анимация не обязательно должна быть CABasicAnimation
.Его также можно создать с помощью UIView.animate
.Просто установите свойство frame
.