如何使用iOS 10 UIViewPropertyAnimator为圆形路径上的视图设置动画

时间:2016-09-14 08:41:08

标签: ios animation ios10

是否可以使用新的iOS 10 UIViewPropertyAnimator为圆形路径中的视图设置动画?

我知道可以按照How do I animate a UIView along a circular path?

使用CAKeyframeAnimation完成

如何使用新API获得相同的结果?

1 个答案:

答案 0 :(得分:1)

我最终得到了以下内容。基本上,计算圆上的点并使用animateKeyFrames在它们之间移动。

let radius = CGFloat(100.0)
let center = CGPoint(x: 150.0, y: 150.0)
let animationDuration: TimeInterval = 3.0
let animator = UIViewPropertyAnimator(duration: animationDuration, curve: .linear)
animator.addAnimations {
    UIView.animateKeyframes(withDuration: animationDuration, delay: 0, options: [.calculationModeLinear], animations: {
        let points = 1000
        let slice = 2 * CGFloat.pi / CGFloat(points)

        for i in 0..<points {
            let angle = slice * CGFloat(i)
            let x = center.x + radius * CGFloat(sin(angle))
            let y = center.y + radius * CGFloat(cos(angle))

            let duration = 1.0/Double(points)
            let startTime = duration * Double(i)
            UIView.addKeyframe(withRelativeStartTime: startTime, relativeDuration: duration) {
                ninja.center = CGPoint(x: x, y: y)
            }
        }
    })
}
animator.startAnimation()