Descartar iOS y animación personalizada del controlador de vista actual
Tengo un controlador de vista que presento con el siguiente código de objetivo c:
CATransition *animation=[CATransition animation];
animation.delegate=self;
animation.duration=0.3;
animation.type=kCATransitionMoveIn;
animation.subtype=kCATransitionFromRight;
[self presentViewController:reader animated:NO completion:nil];
[reader.view.layer addAnimation:animation forKey:@"animation"];
y descartando con código similar dentro de un método delegado
CATransition *animation=[CATransition animation];
animation.delegate=self;
animation.duration=0.3;
animation.type=kCATransitionMoveIn;
animation.subtype=kCATransitionFromLeft;
[self dismissViewControllerAnimated:NO completion:nil];
[self.view.layer addAnimation:animation forKey:@"animation"];
Sin embargo, hay un problema: a diferencia del uso de un controlador de navegación en el que ve una vista deslizarse hacia otra vista; aquí la vista anterior simplemente desaparece instantáneamente, por lo que la nueva vista pasa a una vista en blanco.
¿Cómo soluciono este problema? Necesito este código para trabajar en IOS 6,7 y 8 y me gustaría que se parezca a la animación horizontal que ves al ir y venir entre las vistas que están dentro de los controladores de navegación.
Editar: la solución que acepté tiene un error con iOS 6, si puedo encontrar una solución que la corrija, editaré esta publicación.
Edición 2: lo encontré. Parece que ya que estoy presentando un controlador de vista zBar necesito usar este código
zbarController.wantsFullScreenLayout=NO;
después de configurar la cámara OverlayView.