Как я могу повторить цепочку анимации в Swift? - PullRequest
0 голосов
/ 12 октября 2019

Я бы хотел оживить всю цепочку навсегда.

UIView.animate(withDuration: 2.0, delay: 0.2, options: .curveEaseOut, animations: {
        self.circleImageView.transform = CGAffineTransform(scaleX: 9, y: 9)
    }) { (_) in
        UIView.animate(withDuration: 2.0, delay: 0.2, options: .curveEaseIn, animations: {
            self.circleImageView.transform = CGAffineTransform(scaleX: 0.01, y: 0.01)
        }, completion: nil)
    }

Ответы [ 2 ]

1 голос
/ 12 октября 2019

Вы можете обернуть две анимации в анимацию ключевого кадра. Тогда вы можете .repeat, что:

UIView.animateKeyframes(withDuration: 4.4, delay: 0, options: .repeat, animations: { 
    UIView.addKeyframe(withRelativeStartTime: 0.0, relativeDuration: 2.0/4.4) { 
        self.circleImageView.transform = .init(scaleX: 9, y: 9)
    }
    UIView.addKeyframe(withRelativeStartTime: 0.5, relativeDuration: 2.0/4.4) { 
        self.circleImageView.transform = .init(scaleX: 0.01, y: 0.01)
    }
})
0 голосов
/ 12 октября 2019

Оберните это внутри метода:

func repeatingAnimation() {
    UIView.animate(withDuration: 2.0, delay: 0.2, options: .curveEaseOut, animations: {
        self.circleImageView.transform = CGAffineTransform(scaleX: 9, y: 9)
    }) { (_) in
        UIView.animate(withDuration: 2.0, delay: 0.2, options: .curveEaseIn, animations: {
            self.circleImageView.transform = CGAffineTransform(scaleX: 0.01, y: 0.01)
        }, completion: { [weak self] _ in
            self?.repeatingAnimation()
        })
    }
}
...