Reputation: 3775
I have seen other people who have had this question, but most of the responses aren't working on the latest 3.0 build of iPhone OS. Anyway, I'm wondering how I can programatically rotate a UIView without any input from the accelerometer. The code I have found so far:
CGAffineTransform transform = CGAffineTransformMakeRotation(3.14159/2);
view.transform = transform;
CGRect contentRect = CGRectMake(-80, 80, 480, 320);
view.bounds = contentRect;
However, this doesn't work for UIView (in my testing). Is there something I have to do my AppDelegate in order for this/other code to function, or is there a better way of doing the same thing?
Thanks for any help!
Upvotes: 19
Views: 24704
Reputation: 474
this works for me
CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI_2);
self.view.transform = transform;
// Repositions and resizes the view.
CGRect contentRect = CGRectMake(0,0, 480, 320);
self.view.bounds = contentRect;
Upvotes: 40
Reputation: 24476
Not sure if this is considered private API, so you may not want to use it, but if you want to force the orientation to change without tilting the device, you can try calling:
[[UIDevice currentDevice] performSelector:@selector(setOrientation:)
withObject:(id)UIInterfaceOrientationLandscapeLeft];
I have not tested that it still works on 3.1.2. though I know it works on 3.0.
Upvotes: 0
Reputation: 779
I had success with that:
CATransform3D rotationTransform = CATransform3DIdentity;
[view.layer removeAllAnimations];
rotationTransform = CATransform3DRotate(rotationTransform, angle, 0.0, 0.0, 1);
view.layer.transform = rotationTransform;
Upvotes: 1