Domanda

Sono stato alla ricerca di una risposta a questo, ma non posso venire in mente nulla. A quanto pare, iPhone SDK 3.0 ha reso possibile che UIImagePickerController può essere visualizzato in modalità orizzontale - ma non sto trovando qualsiasi metodo che permetta questo. Vorrei pensare che se l'applicazione è nel paesaggio di default sarebbe regolare automaticamente il controller immagine, ma che non funziona per me.

Grazie per qualsiasi aiuto!

È stato utile?

Soluzione

Non ho controllato se questo è illegale, ma ha funzionato per me. Se si desidera che l'UIImagePickerController per iniziare (e rimanere) in Landscape codice di orientamento:

//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];

Il metodo didRotate:

- (void) didRotate:(NSNotification *)notification

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

}

Altri suggerimenti

Non c'è bisogno di sottoclasse; semplicemente ignorare la proprietà modalPresentationStyle.

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

Se avete solo bisogno di liberarsi del try avvertimento

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

Ho sviluppato una classe UIImagePicker in modalità orizzontale. Grandi opere per le applicazioni che ho sviluppato: spero che funziona anche per voi:

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

Ho un app all-paesaggio utilizzando troppo UIImagePickerController. Si prega di notare che se si chiama UIImagePickerController in modalità orizzontale, la vostra applicazione è possibile essere respinta da Apple Review Team.

ho ideato un semplice risolvere questo problema che si avvalgono il delegato shouldAutoRotate. Apple ha approva questo metodo per un app all-paesaggio.

qui per i dettagli e scaricabile completa del codice sorgente del progetto.

Fare una categoria di UINavigationController e aggiungere questo metodo

- (BOOL)shouldAutorotate
{
    return NO;
}

sottoclasse UIImagePickerController e di esclusione modalPresentationStyle come segue:

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

    return [super modalPresentationStyle];
}

L'immagine-picker è una forma fogli ora e non più in fullscreen-mode, ma si guarda bene nel paesaggio-mode. Questo dovrebbe essere totalmente app-store-safe.

Questo funziona per la galleria, non per scattare foto.

Ho risolto questo problema come segue: dopo ogni variazione dell'orientamento, I semplice ricreare raccoglitrice. Prova questo. Diversamente troppo storto ...

Sto sviluppando una classe che fa del suo meglio per lavorare in modalità orizzontale. Check it out su GitHub: RACameraController

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top