2017-05-18 1 views
2

ボタンを反時計回りに回転させようとしていますが、奇妙な理由で時計回りに回転しています。これまでの方法はM_PIであることがわかっていますが、すぐに3は廃止され、CGFloat.piに置き換えられました。試したことがあります:CGAffineTransform swift 3構文を使用してボタンを反時計回りに回転させますか?

self.loginButton.transform = CGAffineTransform(rotationAngle: -CGFloat.pi) 

まだ時計回りに動きます。どのような構文が反時計回りに動くのか?

+1

ここでの説明を参照してください:http://stackoverflow.com/questions/21761184/catransaction-rotate-layer-360-degree-strangeコアアニメーションを使用する必要があります。 – matt

答えて

1

アニメーションは常に最短の方法で行われます。したがって、CGFloat.pi-CGFloat.piは同じ位置でアニメートされます。

私たちは反時計回りの回転が必要なので、これを使用して強制的に最短にしました。-(CGFloat.pi * 0.999)

UIView.animate(withDuration: 1.0, animations:{ 

self.loginButton.transform = CGAffineTransform(rotationAngle:-(CGFloat.pi * 0.999)) 

}) 

反時計回りの回転のためのこの使用CABasicAnimationより良い解決策があります。

let anticlockAnimation = CABasicAnimation(keyPath: "transform.rotation") 
anticlockAnimation.fromValue = CGFloat.pi 
anticlockAnimation.toValue = 0 
anticlockAnimation.isAdditive = true 
anticlockAnimation.duration = 1.0 
self.loginButton.layer.add(anticlockAnimation, forKey: "rotate") 
self.loginButton.transform = CGAffineTransform(rotationAngle: -CGFloat.pi) 
+0

これは機能しますが、これが機能する理由はわかりません。 – SwiftyJD

+0

@SwiftyJD更新された回答を確認してください。 – Maddy

関連する問題