descargar - iOS7 iPad solo aplicación horizontal, utilizando UIImagePickerController
ios 12 descargar (5)
Aunque la mayoría de las respuestas recomiendan usar .currentContext
, me he enterado después de descartar el imagepicker, todo estaba mal.
En un iPad con paisajismo, en el que es mejor si usas .formSheet
:
let picker = UIImagePickerController()
picker.modalPresentationStyle = .formSheet
picker.sourceType = .photoLibrary
picker.delegate = self
self.present(picker, animated: true)
Creo que este es un problema común y muchas respuestas ya no funcionan, muchas solo parcialmente, si tiene iOS7 y su aplicación de iPad es solo Landscape, pero desea usar UIImagePickerController
con UIImagePickerController
de origen o UIImagePickerControllerSourceTypeCamera
.
¿Cómo configurarlo correctamente, así que funciona 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
".
Gracias a Peter Lapisu sugerencia 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 aplicaciones
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
return UIInterfaceOrientationMaskAll;
}
Categoría UIImagePickerController
@implement UIImagePickerController (extensions)
- (BOOL)shouldAutorotate {
return YES;
}
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskAll;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
return [[UIApplication sharedApplication] statusBarOrientation];
}
@end
Categoría UIViewController
@implementation UIViewController (extensions)
- (BOOL)shouldAutorotate {
return YES;
}
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskAll;
}
@end
He visto este código del código de muestra de Apple.
UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];
imagePickerController.modalPresentationStyle = UIModalPresentationCurrentContext;
Debido a esto, UIModalPresentationCurrentContext UIImagePickerController
se abrirá según la orientación actual del dispositivo.
La documentación de Apple dice:
"Importante: la clase UIImagePickerController solo admite el modo retrato".
Sin embargo, funciona bien en el paisaje para pantalla completa y en iOS 6.
Si su aplicación para iPad es horizontal solo en todas las condiciones, solo haga estos 3 pasos:
1) En tu aplicación delegada
- (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 en ningún lado, solo se compilan con el proyecto
Nota: no es necesario implementar estos métodos en ningún VC
Nota: no es necesario cambiar sus orientaciones soportadas por plist
Esto se prueba y funciona bajo cualquier condición