I'm using CGAffineTransformMakeRotation to rotate a UIView inside an animation block, and I want to rotate it counterclockwise for 180º.
However when I put
myView.animateWithDuration(0.5)
myView.transform = CGAffineTransformMakeRotation(CGFloat(-M_PI))
it still rotates clockwise. What's confusing me is that if I write "manually" the value of M_PI, it works as expected
// this will rotate counterclockwise
myView.transform = CGAffineTransformMakeRotation(CGFloat(-3.14159265358979))
Why this behavior?
Edit: added I'm using an animation block
As I stated in my first comment and as Segii already wrote: the animation will take the shortest distance between where it's value is at now and where it is trying to go. The best solution imho is to use
CABasicAnimationfor forcing a counterclockwise rotation:This will rotate it by 180 counter clockwise in one go.
The angle you specify in the last line + the
fromValueis the starting angle -> 0. And then the rotation will go the distance(toValue - fromValue) = 0 - M_PI = - M_PI-> counter clockwise 180 degree rotation.