Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a way to force the interface orientation to change in iPhone?

I know how to allow/disallow the orientation to rotate using

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

However, I have the problem now where the phone might be in portrait (or upsidedown) and at some point I want to rotate the screen as if the user rotated to landscape. At this point, I don't want autorotate to work anymore. I want to force the interface orientation to stay in landscape. Is there a way to do this? I can probably figure out a hack for turning off the autorotate, but forcing the rotation in the first place I have no idea how to do.

Here's what I'm trying to do:

  • The app rotates to any and all orientations. Everything is normal.

  • An event occurs.

  • Now the autorotate only works for landscapeleft and landscaperight. Moreover, if the user is in portrait or portraitupsidedown, I programmatically rotate to landscaperight to lock the user into that orientation.

Just to make things trickier, I want to pop up a UIAlertView (I know how to do that) before the forced rotation, letting the user know what's going on, and I want to screen behind the alertView to rotate but not the alertView. Is this even possible?

Thanks.

like image 475
iClavdivs Avatar asked Jun 14 '11 17:06

iClavdivs


1 Answers

The best solution for your situation is to notify the user to turn it to landscape orientation and pause the program until the user turns the orientation. And then when the user rotates the device you can handle the delegate methods and start displaying the screen in the landscape mode. This approach has been handled in many of the app store applications and looks like it is one of the best ways to get the app approved in app store. I hope it makes sense.

like image 116
Praveen Kumar Avatar answered Jan 24 '23 07:01

Praveen Kumar