How can I disable landscape orientation?
To disable orientations for a particular View Controller, you should now override supportedInterfaceOrientations
and preferredInterfaceOrientationForPresentation
.
- (NSUInteger) supportedInterfaceOrientations { // Return a bitmask of supported orientations. If you need more, // use bitwise or (see the commented return). return UIInterfaceOrientationMaskPortrait; // return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown;}- (UIInterfaceOrientation) preferredInterfaceOrientationForPresentation { // Return the orientation you'd prefer - this is what it launches to. The // user can still rotate. You don't have to implement this method, in which // case it launches in the current orientation return UIInterfaceOrientationPortrait;}
If you're targeting something older than iOS 6, you want the shouldAutorotateToInterfaceOrientation:
method. By changing when it returns yes, you'll determine if it will rotate to said orientation. This will only allow the normal portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { // Return YES for supported orientations return (interfaceOrientation == UIInterfaceOrientationPortrait); // Use this to allow upside down as well //return (interfaceOrientation == UIInterfaceOrientationPortrait || interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown);}
Note that shouldAutorotateToInterfaceOrientation:
has been deprecated in iOS 6.0.
Xcode 5 and above
- Click your project in the Project Navigator in the left sidebar to open the project settings
- Go to the General tab.
- Uncheck the options you don't want in the Deployment Info section, under Device Orientation
Xcode 4 and below
For those who missed it: you can use the project settings screen to fix orientations throughout the app (no need to override methods in every controller):
It's as simple as toggling the supported interface orientations. You can find by clicking on your Project in the left panel > the app target > Summary tab.