2017-05-18 65 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