2012-10-09 28 views
18

He estado usando superposición personalizada para el controlador UIImagePickerController, y todo funciona bien. He agregado el botón para cambiar entre la cámara frontal y la cámara trasera a través de -UIImagePickerController cómo hacer un cambio animado desde la cámara trasera a la frontal?

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

El problema es que el interruptor no está animado. He estado usando una aplicación de cámara para apple que está construida sobre UIImagePicker, y el cambio está sucediendo animado. ¿Cómo hago esto?

+0

¿Estás utilizando UISwitch? – iOS

+0

Estoy usando UIBarButtonItem. Con el interruptor me refiero al cambio de la cámara trasera a la delantera animada, como en la aplicación de Apple, donde está volteando horizontalmente. – MegaManX

+0

Eche un vistazo 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: duration: options: completion :) –

Respuesta

22

yo estaba tratando de hacer esto hoy, y yo era capaz de conseguir que funcione con el siguiente código:

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

espero que esto ayude a cualquiera que viene a través de esta pregunta.

+0

Gracias por la respuesta. Proporciona la transición correcta que estoy buscando, pero la transición entre las vistas de la cámara todavía parpadea un poco (el dispositivo de la cámara no está configurado antes de que se realice la transición). Dudo simplemente en aumentar la duración de la animación porque ese valor puede ser diferente en iPads anteriores. ¿Alguna idea? Estaba pensando en tomar una captura de pantalla y hacer la transición de eso al selector de imágenes. –

+0

Sí, tengo el mismo problema, la transformación es una buena idea, pero Apple no te proporciona ninguna devolución de llamada de finalización, por lo que el tiempo no es preciso. – daidai

+1

El problema con esta solución es que también voltea la vista de superposición de la cámara, que no es la forma en que Apple lo hace en su propia aplicación de cámara. – HiveHicks

3

Aquí está el código Swift para la respuesta aceptada por si alguien lo necesita:

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

Gracias Pablo!

+0

¡Gracias, hombre, has salvado mi día! –

Cuestiones relacionadas