meetpd
meetpd

Reputation: 9219

How to programmatically rotate the view by 180 degrees on iOS?

How to programmatically rotate the view by 180 degrees in my iPhone App?

Upvotes: 15

Views: 19552

Answers (7)

ByteSlinger
ByteSlinger

Reputation: 1617

Swift 4:

self.view.transform = CGAffineTransform(rotationAngle: .pi);

And a COMMENT (I evidently don't have enough points to enter my comment on his/her answer) for Benjamin Mayo or vtcajones answer of:

view.transform = view.transform.rotated(by: .pi)

This will work the first time, but the next time it is called it will rotate the view again, back to the original rotation, which is probably not what you want. It would be safer to set the transform value exactly each time.

Upvotes: 9

Benjamin Mayo
Benjamin Mayo

Reputation: 6679

As ’CGAffineTransformRotate’ uses radians as its unit of measure, and 180 degrees is the same as PI, instead of the math provided in other answers you can simply do:

view.transform = CGAffineTransformRotate(view.transform, M_PI);

Swift 3:

view.transform = view.transform.rotated(by: .pi)

If you plan on doing a lot of transforms, it's probably best to read up on radians, so you understand what is going on.

Upvotes: 36

vtcajones
vtcajones

Reputation: 1720

Latest Swift 3 syntax:

view.transform = view.transform.rotated(by: .pi)

Upvotes: 1

Wilson
Wilson

Reputation: 9136

In Swift 3 :

let rotationDegrees =  180.0
let rotationAngle = CGFloat(rotationDegrees * M_PI / 180.0)
view.transform = CGAffineTransform(rotationAngle: rotationAngle)

Upvotes: 5

Ram Vadranam
Ram Vadranam

Reputation: 485

Simple solution:

view.transform = CGAffineTransformMakeRotation(degrees*M_PI/180);

Upvotes: 6

thealch3m1st
thealch3m1st

Reputation: 282

Same outcome as @Manny's answer using a different function.

 CGFloat degreesOfRotation = 180.0;
 view.transform = CGAffineTransformRotate(view.transform,
     degreesOfRotation * M_PI/180.0);

Upvotes: 4

Manny
Manny

Reputation: 6297

Should be possible by using CGAffineTransform

Quote from this question, this should do the trick:

CGFloat radians = atan2f(yourView.transform.b, yourView.transform.a);
CGFloat degrees = radians * (180 / M_PI);
CGAffineTransform transform = CGAffineTransformMakeRotation((90 + degrees) * M_PI/180);
yourView.transform = transform;

Upvotes: 14

Related Questions