您可以使用UIViewPropertyAnimator 来完成此操作
您需要在初始化程序中创建动画,您可以在其中设置持续时间(以秒为单位)和时间曲线。
var animator = UIViewPropertyAnimator(duration: 10, curve: .linear, animations: {
//animating the change of position for an object
objectToAnimate.frame = objectToAnimate.frame.offsetBy(dx: 100, dy: 0)
})
animator.pauseAnimation()
如果您想要使用贝塞尔曲线或基于弹簧的时序制作更复杂的动画,请使用其他 init。
根据用户交互,您可以开始、继续或暂停 动画。创建动画对象后,您应该暂停您的动画,这样它就不会在您创建后立即停止。
animator.pauseAnimation()
animator.startAnimation()
animator.continueAnimation(withTimingParameters: nil, durationFactor: 0)
您还可以设置动画的百分比,以便从动画的某个点开始。
animator.fractionComplete = 0.5
跳到动画的中间,已经完成了 50%
如果您想很好地了解它的工作原理,我强烈建议您阅读WWDC Animation Keynote。