2016-07-02 5 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

は、あなたが円の方向を指定することができます文書化hereとしてbezierPathWithArcCenter...を使用することです...非常に単純なものでした。開始角度として-M_PI_2を使用し、終了角度として3 * M_PI_2を使用すると、先頭に始まり終わる円が表示されます。

+0

ありがとうございます。どのようにして連続的な動きができるか知っていますか?瞬時にアニメーションが無限に繰り返されますが、前の終了後に新しいアニメーションが再開される間、一時停止の短い分割があります。 –

+0

上記のパスを作成する場合は、おそらくそれを閉じる必要があります。 – jrturton

+0

あなたの答えや鉱山のように「上」ですか? –

関連する問題