Instead of setting an orientation, the proper way to do it is by having your application listen for when the user rotates the phone, then return YES or NO to indicate that the app should, in fact, rotate (i.e. always return NO if you want the app to always remain in its initial state.) The shouldAutorotateToInterfaceOrientation:
method is automatically called whenever the user changes orientation.
For example, in your view controller, implement the method to only allow the phone to be used in landscape right/left:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
if (UIDeviceOrientationIsLandscape) { return YES };
return NO;
}
You will also want to set your app's default orientation (so it doesn't start in portrait mode) by adding the UIInterfaceOrientation
tag to your app's info.plist file with the value UIInterfaceOrientationLandscapeRight
. Otherwise, the default value is portrait, and the user will have to tilt the phone to get it into the expected orientation.