2016-09-14 20 views

答えて

0

私は次のようになりました。基本的に、円上の点を計算し、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() 
関連する問題