2012-10-09 9 views
18

Ho utilizzato la sovrapposizione personalizzata per il controller UIImagePickerController e tutto funziona correttamente. Ho aggiunto il pulsante per passare tra fotocamera anteriore e posteriore via -UIImagePickerController come eseguire il passaggio animato dalla telecamera posteriore a quella anteriore?

- (IBAction)changeCamera:(id)sender { 
if (self.imagePicker.cameraDevice == UIImagePickerControllerCameraDeviceRear) { 
    self.imagePicker.cameraDevice = UIImagePickerControllerCameraDeviceFront; 
} 
else { 
    self.imagePicker.cameraDevice = UIImagePickerControllerCameraDeviceRear; 
} 
} 

Il problema è, interruttore non è animato. Ho usato l'app per fotocamera Apple che è stata costruita su UIImagePicker e l'interruttore sta accadendo animato. Come faccio a fare questo?

+0

Stai utilizzando UISwitch? – iOS

+0

Sto usando UIBarButtonItem. Con interruttore intendo il passaggio dalla telecamera posteriore a quella frontale, come nell'app di Apple, dove è orizzontale. – MegaManX

+0

Dai un'occhiata a ['transitionFromView: toView: duration: options: completion:'] (http://developer.apple.com/library/ios/#documentation/uikit/reference/uiview_class/uiview/uiview.html#//apple_ref/occ/clm/UIView/transitionFromView: toView: durata: opzioni: completamento :) –

risposta

22

stavo cercando di fare questo oggi, e sono stato in grado di farlo funzionare con il seguente codice:

[UIView transitionWithView:imagePickerController.view duration:1.0 options:UIViewAnimationOptionAllowAnimatedContent | UIViewAnimationOptionTransitionFlipFromLeft animations:^{ 
      imagePickerController.cameraDevice = UIImagePickerControllerCameraDeviceRear; 
     } completion:NULL]; 

Spero che questo aiuta chi si imbatte in questa domanda.

+0

Grazie per la risposta. Fornisce la transizione corretta che sto cercando, ma la transizione tra le visualizzazioni della videocamera è ancora un po 'sfarfallio (il dispositivo non è impostato prima che la transizione sia completata). Sono riluttante ad aumentare la durata dell'animazione perché quel valore potrebbe essere diverso sugli iPad più vecchi. qualche idea? Stavo pensando di scattare una schermata e passare da quella alla selezione delle immagini. –

+0

Sì, ho lo stesso problema - la trasformazione è una buona idea - ma Apple non ti dà il callback del completamento, quindi la sincronizzazione non è accurata. – daidai

+1

Il problema con questa soluzione è che capovolge anche la vista della sovrapposizione della fotocamera, il che non è il modo in cui Apple lo fa nella propria app fotocamera. – HiveHicks

3

Ecco il codice Swift per la risposta accettata nel caso qualcuno ne ha bisogno:

UIView.transitionWithView(imagePickerController.view!, duration: 1.0, options: [.AllowAnimatedContent, .TransitionFlipFromLeft], animations: {() -> Void in 
      imagePickerController.cameraDevice = .Rear 
      }, completion: nil) 

Grazie Pablo!

+0

Grazie amico mi hai salvato la giornata! –