早点从 UIViewPropertyAnimator 完成一些动画
Finish some animations from UIViewPropertyAnimator earlier
我正在寻找一种方法来将一些动画添加到比其他动画更早完成的 UIViewPropertyAnimator
中。
UIViewPropertyAnimator
例如有一种方法,您可以在其中添加具有延迟的动画
animator.addAnimations(animation: (()-> Void), delayFactor: CGFloat)
因此动画从持续时间的 50% 开始,时间为 0.5
的 delayFactor
。
我搜索类似
的东西
animator.addAnimations(animation: (()->Void), realtiveDuration: CGFloat)
因此动画在持续时间的 50% 后以 0.5
的 relativeDuration
结束。
经过一番研究,我找到了使用
的解决方案
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)
或其他方法,但将我的舒适区留在那里。
您可以这样调用:
UIView.addKeyframe(withRelativeStartTime: 0.5, relativeDuration: 0.5, animations: element.animation(element.view))
我正在寻找一种方法来将一些动画添加到比其他动画更早完成的 UIViewPropertyAnimator
中。
UIViewPropertyAnimator
例如有一种方法,您可以在其中添加具有延迟的动画
animator.addAnimations(animation: (()-> Void), delayFactor: CGFloat)
因此动画从持续时间的 50% 开始,时间为 0.5
的 delayFactor
。
我搜索类似
的东西animator.addAnimations(animation: (()->Void), realtiveDuration: CGFloat)
因此动画在持续时间的 50% 后以 0.5
的 relativeDuration
结束。
经过一番研究,我找到了使用
的解决方案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)
或其他方法,但将我的舒适区留在那里。
您可以这样调用:
UIView.addKeyframe(withRelativeStartTime: 0.5, relativeDuration: 0.5, animations: element.animation(element.view))