Я ищу способ добавить некоторые анимации к UIViewPropertyAnimator
, которые заканчиваются раньше, чем другие.
UIViewPropertyAnimator
есть, например, метод, где вы можете добавить анимацию с задержкой
animator.addAnimations(animation: (()-> Void), delayFactor: CGFloat)
, поэтому анимация начинается с 50% продолжительности с delayFactor
из 0.5
.
Я ищу что-то вроде
animator.addAnimations(animation: (()->Void), realtiveDuration: CGFloat)
, поэтому анимация заканчивается через 50% времени при relativeDuration
из 0.5
.
После некоторых исследований я нашел решение с помощью
animator.addAnimations {
UIView.animateKeyframes(withDuration: duration, delay: 0.0, animations: {
UIView.addKeyframe(withRelativeStartTime: 0.0, relativeDuration: 0.3) {
view.alpha = 0.0
}
})
}
для архивирования этого поведения.
Проблема в том, что я хочу использовать это в каком-то автомате, где я перебираю некоторые элементы и вызываю метод для каждого из элементов:
func animation(view: UIView) -> (() -> Void) {
return {
view.alpha = 0.0
}
}
, который отлично работает, например, при использовании метода
animator.addAnimations(animation: element.animation(element.view), delayFactor: 0.5)
но я не могу назвать это внутри
.addKeyframe(...){
element.animation(element.view)
}
Может, у кого-нибудь из вас есть решение?
Я думаю о переопределении UIViewPropertyAnimator
, например, чтобы добавить запрашиваемый метод animator.addAnimations(animation: (()->Void), realtiveDuration: CGFloat)
или что-то еще, но оставляю там свою зону комфорта.