目的
构建一个复杂的动画,根据其进度触发某些动作。
题
是否可以检查UIViewPropertyAnimator的进度并在其中添加动画…
UIView动画专为轻量级动画而设计。
如果你想构建复杂的动画,我认为最好使用 CAAnimation 。
您可以使用 CAAnimationGroup 和 keyTimes 同步和分组。
一个可能有用的参考是“ 如何在Swift中创建复杂的加载动画 “来自raywenderlich.com的教程
在某些属性中,您可以控制delayFactor添加动画以替换先前的目标。
let animView = UIView.init(frame: CGRect.init(x: 0, y: 0, width: 100, height: 200)) animView.backgroundColor = UIColor.green animator = UIViewPropertyAnimator.init(duration: 5.0, curve: UIView.AnimationCurve.easeInOut) view.addSubview(animView) animator.addCompletion { (position : UIViewAnimatingPosition) in if position == UIViewAnimatingPosition.end{ animView.center = CGPoint.init(x: 100, y: 300) } } animator.addAnimations({ animView.center = CGPoint.init(x: 600, y: 300) }) animator.addAnimations({ animView.center = CGPoint.init(x: 200, y: 200) }, delayFactor: 0.1) animator.addAnimations({ animView.center = CGPoint.init(x: 300, y: 600) }, delayFactor: 0.5) animator.addAnimations({ animView.center = CGPoint.init(x: 400, y: 400) }, delayFactor: 0.9) animator.startAnimation()