2016-07-02 2 views
1

Я хочу анимировать вдоль bezierPath против часовой стрелки.CAKeyframeAnimation против часовой стрелки

На данный момент только код позволяет мне делать это по часовой стрелке.

 let arrowHead = UIImageView() 
     arrowHead.image = UIImage(named: "arrowHead.png") 
     arrowHead.frame = CGRect(x: 55, y: 300, width: 12, height: 12) 


     let ovalPath = UIBezierPath(ovalInRect: CGRectMake(50, 240, 320, 240)) 
     let ovalShapeLayer = CAShapeLayer() 
     ovalShapeLayer.fillColor = UIColor.clearColor().CGColor 
     ovalShapeLayer.strokeColor = UIColor.lightGrayColor().CGColor 
     ovalShapeLayer.lineWidth = 1.5 
     ovalShapeLayer.path = ovalPath.CGPath 


     self.view.layer.addSublayer(ovalShapeLayer) 

     let myKeyFrameAnimation = CAKeyframeAnimation(keyPath: "position") 
     myKeyFrameAnimation.path = ovalPath.CGPath 

     myKeyFrameAnimation.rotationMode = kCAAnimationRotateAuto 
     myKeyFrameAnimation.repeatCount = Float.infinity 
     myKeyFrameAnimation.duration = 6.0 

     // add the animation 
     arrowHead.layer.addAnimation(myKeyFrameAnimation, forKey: "animate position along path") 
     self.view.addSubview(arrowHead) 

любые идеи?

ответ

0

Хорошо.

myKeyFrameAnimation.speed = -1

Было очень просто ...

0

В альтернативном решении заключается в использовании bezierPathWithArcCenter..., как документально here, которая позволяет определить направление окружности. Используя -M_PI_2 в качестве начального угла и 3 * M_PI_2, поскольку конечный угол даст начало и конец круга вверху.

+0

спасибо. Вы случайно знаете, как вы можете иметь непрерывное движение? В данный момент анимация повторяется бесконечно, но есть короткая секундная пауза паузы, в то время как новая анимация перезапускается после предыдущего окончания. –

+0

Если вы делаете дорожку выше, вам, вероятно, нужно ее закрыть. – jrturton

+0

«Выше» как в вашем ответе, так и у меня? –