Мне немного неясно, чего мы пытаемся достичь, но я чувствую, что идея в том, что у нас есть два представления с повторяющимися анимациями, которые необходимо координировать.Чтобы продемонстрировать пример того, как это можно сделать, я решил сделать обе анимации масштабированными с последующим уменьшением:
Анимированный GIF здесь заканчивается после нескольких повторений, но на самом деле повторение продолжается вечно.
Это было просто достигнуто следующим образом:
func step1() {
UIView.animate(withDuration: 1, animations: {
self.v1.transform = CGAffineTransform(scaleX: 1.5, y: 1.5)
self.v2.transform = .identity
}) { _ in
DispatchQueue.main.async {
self.step2()
}
}
}
func step2() {
UIView.animate(withDuration: 1, animations: {
self.v1.transform = .identity
self.v2.transform = CGAffineTransform(scaleX: 1.5, y: 1.5)
}) { _ in
DispatchQueue.main.async {
self.step1()
}
}
}
Дело в том, что этапы анимации никогда не могут синхронизироваться между двумя представлениями, потому что каждый этап включает в себя оба просмотров и следует предыдущего этапа.Поэтому я почти уверен, что вы можете адаптировать этот подход к вашей анимации.