2011-12-02 10 views
8

Nella mia applicazione iPhone ho un UIImagePickerController per scattare foto. Ho nascosto tutti i controlli predefiniti della fotocamera e aggiunto UIView con il pulsante Due come CameraOverLayView in UIImagePickerController. La mia applicazione viene sempre eseguita solo in modalità orizzontale. La fotocamera sta anche avviando solo la modalità orizzontale. Ora CameraOverlayView si trova solo in Landscape Left side e non passa a Landscape to Right. Come posso cambiare CameraOverlayView LandscapeMode Left and Right quando l'orientamento del dispositivo cambia? Per favore aiutami a sistemarlo. È un grosso problema nella mia app. Questo codice tenere la modalità OverlayView in Orizzontale SinistraCome cambiare la fotocamera Overlayview orientation landscape left and right iPhone?

imgpicker.cameraOverlayView.transform = CGAffineTransformRotate(CGAffineTransformIdentity, 117.81); 

e questo codice tenere il cameraoverlayview in modalità orizzontale a destra GAffineTransform trasformare = self.view.transform;

transform = CGAffineTransformRotate(transform, (M_PI/2.0)); 

    imgpicker.cameraOverlayView.transform = transform; 

ho usato questi codici nei metodi UIInterfaceOrientation come questo,

UIInterfaceOrientation orientation= [[UIApplication sharedApplication] statusBarOrientation]; 
    if (orientation == UIInterfaceOrientationLandscapeLeft) 
    { 
     imgpicker.cameraOverlayView.transform = CGAffineTransformRotate(CGAffineTransformIdentity, 117.81); 
    } 
    else if (orientation == UIInterfaceOrientationLandscapeRight) 
    { 
     CGAffineTransform transform = self.view.transform; 
      transform = CGAffineTransformRotate(transform, (M_PI/2.0)); 
     imgpicker.cameraOverlayView.transform = transform; 
    } 

Ma, questi non mi stanno aiutando. Quando ruoto il panorama di orientamento del dispositivo a sinistra ea destra, la vista della telecamera non cambia. Puoi per favore risolvere il mio problema? Grazie.

+0

Qualcuno ha ancora risolto? –

+0

grazie amico per la soluzione! –

+0

@ JayQ: hai già risolto questo? –

risposta

16

Grazie a tutti. Ho risolto da solo il problema dell'orientamento di Camera OverlayView. Ho usato lo stesso codice menzionato nella mia domanda. Ho appena aggiunto UIDeviceOrientation Notification per le modifiche di orientamento. Si prega di trovare il codice di seguito,

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:) name:@"UIDeviceOrientationDidChangeNotification" object:nil]; 


- (void) orientationChanged:(NSNotification *)notification 
{ 
    UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation]; 
if(orientation == UIDeviceOrientationLandscapeLeft) 
     {     
      CGAffineTransform transform = self.view.transform; 
      transform = CGAffineTransformRotate(transform, (M_PI/2.0)); 
      imgpicker.cameraOverlayView.transform = transform; 
     } 
     else if(orientation == UIDeviceOrientationLandscapeRight) 
     { 
      imgpicker.cameraOverlayView.transform = CGAffineTransformRotate(CGAffineTransformIdentity,117.81); 
     } 
} 

Ho appena aggiunto questo metodo ulteriormente nel mio codice. In questo modo, quando l'utente cambia l'orientamento del dispositivo, questo metodo chiamerà e cambierà l'orientamento della visualizzazione della sovrapposizione della telecamera. Controlla le tue condizioni all'interno di questo metodo altrimenti l'app si arresta in modo anomalo. Grazie.

+1

Sto usando questo e il mio overlay non si allinea mai correttamente. È sempre troppo a sinistra o a destra. – zakdances

+0

@yuvaraj: Ciao ... sto usando l'iPhone 4 e puoi dirmi l'esatto codice di rotazione per l'orientamento. Sono in grado di ruotarlo, ma i pulsanti si allineano a sinistra o all'estrema destra. –

+1

@yourfriendzak: hai trovato una soluzione per questo? Se è così, puoi aiutarmi? –