Question

je cherche une réponse à cela, mais ne peut pas arriver à quoi que ce soit. Apparemment, iPhone SDK 3.0 a permis que UIImagePickerController peut être affiché en mode paysage - mais je ne trouve pas une méthode qui permettra cela. Je pense que si l'application est dans le paysage par défaut, il ajusterait automatiquement le contrôleur d'image, mais qui ne fonctionne pas pour moi.

Merci pour toute aide!

Était-ce utile?

La solution

Je n'ai pas vérifié si cela est illégal, mais cela a fonctionné pour moi. Si vous voulez que le UIImagePickerController pour commencer (et rester) dans le code d'orientation Paysage:

//Initialize picker

UIImagePickerController * picker = [[UIImagePickerController alloc] init];
   picker.delegate = self;


//set Device to Landscape. This will give you a warning. I ignored it.
//warning: 'UIDevice' may not respond to '-setOrientation:'


[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];

//Set Notifications so that when user rotates phone, the orientation is reset to landscape.
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];

//Refer to the method didRotate:   
[[NSNotificationCenter defaultCenter] addObserver:self
              selector:@selector(didRotate:)
               name:@"UIDeviceOrientationDidChangeNotification" object:nil];

//Set the picker source as the camera   
picker.sourceType = UIImagePickerControllerSourceTypeCamera;

//Bring in the picker view   
[self presentModalViewController:picker animated:YES];

La méthode didRotate:

- (void) didRotate:(NSNotification *)notification

{
      //Maintain the camera in Landscape orientation
 [[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];

}

Autres conseils

Pas besoin de sous-classe; simplement remplacer la propriété modalPresentationStyle.

    UIImagePickerController *picker = [[UIImagePickerController alloc] init];
    picker.modalPresentationStyle = UIModalPresentationFormSheet;
    [viewController presentViewController:picker animated:YES completion:NULL];

Si vous avez juste besoin de se débarrasser de l'essai d'avertissement

@interface UIDevice ()
    -(void)setOrientation:(UIDeviceOrientation)orientation;
@end

J'ai développé une classe UIImagePicker en mode paysage. Fonctionne très bien pour les applications que j'ai développé: espérons que cela fonctionne pour vous aussi:

GitHub: https://github.com/imaginaryunit/iOSLandscapeThreadedImagePicker.git

J'ai une application tout en utilisant le paysage UIImagePickerController aussi. S'il vous plaît noter que si vous appelez UIImagePickerController en mode paysage, votre application est possible d'être rejetée par Apple Review Team.

J'ai conçu un travail simple autour de cette question qui utilisent le délégué shouldAutoRotate. Apple approuve cette méthode pour une application tout paysage.

Voir pour les détails et Code téléchargeable source complet du projet.

Faire une catégorie de UINavigationController et ajoutez cette procédé

- (BOOL)shouldAutorotate
{
    return NO;
}

UIImagePickerController Schéma et override modalPresentationStyle comme suit:

- (UIModalPresentationStyle)modalPresentationStyle
{
    if([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)
    {
        return UIModalPresentationFormSheet;
    }

    return [super modalPresentationStyle];
}

Le-sélecteur d'image est une forme feuille maintenant et non plus en mode plein écran, mais il semble bon en mode paysage. Cela devrait être totalement app-store-safe.

Cela fonctionne pour la galerie, pas pour prendre des photos.

Je l'ai résolu ce problème comme suit: après chaque changement d'orientation, je simple, sélecteur recréer. Essaye ça. Différemment est trop tordu ...

Je développe une classe qui essaie de son mieux pour travailler en mode paysage. Check it out sur GitHub: RACameraController

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top