I am developing an app which supports Landscape orientation only. It uses an UIImagePickerController
to pick images and/or videos from the library. App is functioning fine in iOS-5 or before but it gets crashed when I try to present image picker controller.It gives the following message after crashing:
* Terminating app due to uncaught exception 'UIApplicationInvalidInterfaceOrientation', reason: 'Supported orientations has no common orientation with the application, and shouldAutorotate is returning YES'
As @rocky said you have to add Potrait mode to your application to use UIImagePickerController
Like this
or
add this to your landscape only app delegate class
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window{
return UIInterfaceOrientationMaskAll;
}
and from Mr.Daniel's Answer i found a nice solution for your Landscape only App,
as you need to support only landscape to your application, you just need to add a category for UINavigationController
like this
@implementation UINavigationController (LandscapeOnly)
- (NSUInteger) supportedInterfaceOrientations{
return UIInterfaceOrientationMaskLandscape;
}
@end
and add this to your viewControllers, it works for me.
From UIImagePickerController documentation:
Important: The UIImagePickerController class supports portrait mode only. This class is intended to be used as-is and does not support subclassing. The view hierarchy for this class is private and must not be modified, with one exception. You can assign a custom view to the cameraOverlayView property and use that view to present additional information or manage the interactions between the camera interface and your code.
You will have to add Portrait mode to your Support interface orientations if you want to use this controller.