Aplicación para iOS7 iPad Landscape solo, con UIImagePickerController

Creo que este es un problema común y muchas respuestas ya no funcionan, muchas solo son parciales, si usted está bajo iOS7 y su aplicación iPad es solo Paisaje, pero desea utilizar el UIImagePickerController con la fuente UIImagePickerControllerSourceTypePhotoLibrary o UIImagePickerControllerSourceTypeCamera .

¿Cómo configurarlo bien, por lo que está funcionando al 100%? Y no obtiene orientaciones mixtas y evita el error "Las orientaciones admitidas no tienen una orientación común con la aplicación y shouldAutorotate devuelve YES ".

Si su aplicación para iPad es horizontal solo en todas las condiciones, simplemente realice estos tres pasos:

1) En su delegado de la aplicación

 - (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window { return UIInterfaceOrientationMaskAll; } 

2) Crear un encabezado de categoría

 #import "UIViewController+OrientationFix.h" @implementation UIViewController (OrientationFix) - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation { return UIInterfaceOrientationIsLandscape(toInterfaceOrientation); } - (BOOL)shouldAutorotate { return YES; } - (NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskLandscape; } @end 

3) Crear una implementación de categoría

 #import "UIImagePickerController+OrientationFix.h" @implementation UIImagePickerController (OrientationFix) - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation { return UIInterfaceOrientationIsLandscape(toInterfaceOrientation); } - (BOOL)shouldAutorotate { return YES; } - (NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskLandscape; } @end 

Nota: No es necesario importar estas categorías a ninguna parte, solo se comstackn con el proyecto

Nota: no es necesario implementar estos methods en ningún VC

Nota: no es necesario cambiar las orientaciones compatibles con Plist

Esto se testing y funciona bajo cualquier condición.

He visto este código del código de ejemplo de Apple.

 UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init]; imagePickerController.modalPresentationStyle = UIModalPresentationCurrentContext; 

Debido a este UIModalPresentationCurrentContext UIImagePickerController se abrirá según la orientación actual del dispositivo.

La documentation de Apple dice:

"Importante: la class UIImagePickerController solo admite el modo retrato".

Aunque, funciona bien en paisaje para pantalla completa y en iOS 6.

Referencia de la class UIImagePickerController

Gracias a la sugerencia de Peter Lapisu anterior. No funciona para mí (tal vez estoy en iOS 8.3), pero pude modificarlo para solucionar mis problemas de orientación. Mis códigos están debajo

En delegado de la aplicación

 - (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window { return UIInterfaceOrientationMaskAll; } 

Categoría UIImagePickerController

 @implement UIImagePickerController (extensions) - (BOOL)shouldAutorotate { return YES; } - (NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskAll; } - (UIInterfaceOrientation)prefernetworkingInterfaceOrientationForPresentation { return [[UIApplication shanetworkingApplication] statusBarOrientation]; } @end 

Categoría UIViewController

 @implementation UIViewController (extensions) - (BOOL)shouldAutorotate { return YES; } - (NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskAll; } @end