Je crée une application en mode paysage et j'utilise UIImagePickerController
pour prendre des photos avec l'appareil photo de l'iPhone et je souhaite également la créer en mode paysage. Mais comme la documentation d'Apple suggère UIImagePickerController
ne supporte pas l'orientation paysage, alors que dois-je faire pour obtenir la fonctionnalité souhaitée?Utilisation de UIImagePickerController en orientation paysage
Répondre
Si vous souhaitez utiliser UIImagePickerController en mode paysage, utilisez user1673099's answer, mais au lieu de:
- (BOOL)shouldAutorotate
{
return NO;
}
utilisation:
- (UIInterfaceOrientationMask)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskLandscape;
}
et le sélecteur ouvrirait en mode paysage:
Mais faire s Ure vous vérifiez Portrait dans les informations de déploiement:
Cela fonctionne très bien. Une question, pourquoi devrions-nous vérifier Portrait dans les informations de déploiement? Je sais que c'est nécessaire mais je ne peux pas comprendre la raison. –
@AnsonYao car 'UIImagePickerController' ne supporte que le mode Portrait. Si vous ne prenez pas en charge le portrait "globalement", le sélecteur d'image se bloquera car il n'a aucune orientation utilisable. – pkamb
@ Mc.Avoir son fonctionnement si je vérifie le mode portrait dans les informations de déploiement. mais cela change simplement l'orientation de toute l'application.seriez-vous s'il vous plaît me dire comment puis-je résoudre ce problème –
Essayez de cette façon ....
Comme per Apple document, ImagePicker contrôleur Ne faites jamais tourner en mode paysage. Vous devez utiliser en mode Portrait uniquement.
Pour désactiver le mode paysage uniquement pour ImagePicker Controller suivre ci-dessous le code:
Dans votre ViewController.m:
Faire la SubClass (NonRotatingUIImagePickerController) de l'image Picker Contrôleur
@interface NonRotatingUIImagePickerController : UIImagePickerController
@end
@implementation NonRotatingUIImagePickerController
// Disable Landscape mode.
- (BOOL)shouldAutorotate
{
return NO;
}
@end
Utilisation comme suit
UIImagePickerController* picker = [[NonRotatingUIImagePickerController alloc] init];
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
picker.delegate = self;
etc.... Just as Default ImagePicker Controller
Cela fonctionne pour moi & Faites-moi savoir si vous avez un problème.
Cela vous at-il aidé? – user1673099
Je ne veux pas désactiver le mode paysage, je veux seulement utiliser le contrôleur de sélecteur d'image en mode paysage pas en mode portraite. Je veux savoir si je peux faire pivoter le sélecteur d'image pour prendre des photos aussi bien ou non ?? –
@ParasGorasiya, ImagePicker ne supportera jamais le mode paysage. Il ne supporte que le mode Portrait. – user1673099
La bonne façon d'utiliser UIImagePickerController
en mode paysage sans hacks est de le mettre dans un UIPopoverController
- (void)showPicker:(id)sender
{
UIButton *button = (UIButton *)sender;
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.allowsEditing = YES;
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
_popover = [[UIPopoverController alloc] initWithContentViewController:picker];
[_popover presentPopoverFromRect:button.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}
uniquement applicable dans UIUserInterfaceIdiomPad –
@ iTroyd23 Il peut être piraté en ajoutant la catégorie à UIPopoverController – yershuachu
@yershuachu droit, vous remplacez un bidouille avec un autre? ;-) –
Modifier méthode ci-dessus code
- (NSUInteger)supportedInterfaceOrientations
{
UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
if(orientation == UIDeviceOrientationLandscapeRight || orientation == UIDeviceOrientationLandscapeLeft)
return UIInterfaceOrientationMaskLandscape;
else
return UIInterfaceOrientationMaskPortrait;
}
La réponse acceptée ne fonctionne pas pour moi. Je devais aussi ajouter modalPresentationStyle à UIImagePickerController pour le faire fonctionner.
UIImagePickerController *pickerController = [[UIImagePickerController alloc] init];
pickerController.modalPresentationStyle = UIModalPresentationCurrentContext;
pickerController.delegate = self;
pickerController.allowsEditing = YES;
pickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
[self presentViewController:pickerController animated:YES completion:nil];
Et bien sûr, n'oubliez pas de mettre dans votre délégué:
- (UIInterfaceOrientationMask)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskLandscape;
}
Mais selon la documentation d'Apple ce ne sont pas pris en charge de présenter ce sélecteur dans le mode paysage alors soyez prudent à ce sujet.
... et je veux aussi le créer en mode paysage.
Une ligne de code peut faire une grande différence! Dans la méthode ou la fonction où vos terres IBAction:
Swift,
let imagePickerController = UIImagePickerController()
imagePickerController.delegate = self
// .overCurrentContext allows for landscape and portrait mode
imagePickerController.modalPresentationStyle = .overCurrentContext
Objective-C,
UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];
[imagePickerController setDelegate:self];
[imagePickerController setModalPresentationStyle: UIModalPresentationOverCurrentContext];
Note: Ceci permettra imagePickerController de présenter sa vue correctement, mais
le seront
peut pas résoudre le problème de rotation alors qu'il est présenté.
est ici une version qui prend en charge la rotation dans toutes les orientations d'interface:
/// Not fully supported by Apple, but works as of iOS 11.
class RotatableUIImagePickerController: UIImagePickerController {
override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
return .all
}
}
De cette façon, si l'utilisateur tourne son appareil, il va mettre à jour le contrôleur de sélecteur pour soutenir l'orientation actuelle. Instanciez juste comme vous le feriez normalement un UIImagePickerController.
Si vous souhaitez uniquement prendre en charge un sous-ensemble d'orientations, vous pouvez renvoyer une valeur différente.
Cela fonctionne très bien avec Swift 4.0 dans iOS 10/11. Il suffit de laisser tomber l'extension quelque part dans votre projet, pas besoin de sous-classer quoi que ce soit pour que cela fonctionne.
Si vous avez besoin de spécifier les types de périphériques, vous pouvez ajouter un contrôle comme celui-ci:
import UIKit
extension UIImagePickerController {
override open var supportedInterfaceOrientations: UIInterfaceOrientationMask {
return UIDevice.current.userInterfaceIdiom == .phone ? .portrait : .all
}
}
Cela permettra un iPad de tourner librement, mais en mode portrait fait respecter sur un téléphone. Assurez-vous simplement que votre application est configurée pour les prendre en charge dans son info.plist, sinon vous risquez de rencontrer des plantages lors du lancement du sélecteur.
- 1. UIImagePickerController en orientation paysage
- 2. UIImagePickerController enregistrer une vidéo avec orientation paysage
- 3. UIImagePickerController didFinishPickingMediaWithInfo Orientation
- 4. UIImagePickerController iPhone5 Orientation Landscapemode
- 5. orientation vidéo UIImagePickerController
- 6. UIImagePickerController Orientation
- 7. UIImagepickercontroller en mode paysage
- 8. UIImagePickerController Orientation de l'image
- 9. UIPageControl en orientation paysage
- 10. CMDeviceMotion en orientation paysage
- 11. Affichage en orientation Paysage
- 12. BAD_ACCESS en orientation paysage
- 13. UITextField en orientation paysage
- 14. AVCaptureMovieFileOutput Orientation en paysage
- 15. Orientation UIImagePickerController sur iPad
- 16. Verrouiller la caméra en orientation paysage
- 17. UIImagePickerController - transformer la prévisualisation vidéo en paysage
- 18. Portrait Clavier en orientation paysage
- 19. ZXing.net.mobile scan en orientation paysage
- 20. datatable brillant en orientation paysage
- 21. UIImagePickerController et l'orientation Paysage
- 22. iPad Orientation paysage
- 23. Android, orientation paysage uniquement?
- 24. Force Orientation paysage, Swift
- 25. Application HTML Orientation Paysage
- 26. UIView Orientation Paysage
- 27. Orientation paysage pour UITabBarController?
- 28. orientation Interface paysage seulement
- 29. Android: outil de recherche en orientation paysage
- 30. MPMoviePlayerController bouton terminé, orientation Paysage
Il semble fonctionner dans iOS 8 beta 4. Le seul problème est après avoir pris la photo, il vous montrera l'écran (utiliser cette photo ou annuler) en mode portrait. Mais l'image est bien capturée dans le paysage. –