我寻找一种方法来添加一些动画到UIViewPropertyAnimator
,然后比其他人早完成。例如,UIViewPropertyAnimator
有一种方法可以添加延迟动画
animator.addAnimations(animation: (()-> Void), delayFactor: CGFloat)
所以动画在delayFactor
的0.5
的持续时间的50%开始。
我搜索类似的东西
animator.addAnimations(animation: (()->Void), realtiveDuration: CGFloat)
所以动画在relativeDuration
of 0.5
的50%持续时间后结束。
经过一些研究,我找到了一个解决方案
animator.addAnimations {
UIView.animateKeyframes(withDuration: duration, delay: 0.0, animations: {
UIView.addKeyframe(withRelativeStartTime: 0.0, relativeDuration: 0.3) {
view.alpha = 0.0
}
})
}
存档此行为。问题是,我想在某种自动化中使用它,我遍历一些元素并为每个元素调用一个Method:
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)
或其他东西,但留下我的comfortzone。
你可以这样打电话:
UIView.addKeyframe(withRelativeStartTime: 0.5, relativeDuration: 0.5, animations: element.animation(element.view))