iOSclosures和呈现视图控制器自定义animation

我有一个视图控制器,我提出了以下目标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"]; 

并在委托方法内用类似的代码解雇

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

然而,有一个问题:不像使用导航控制器,你看到一个视图滑动到其他视图; 这里旧视图就会立即消失,所以新视图移到空白视图上。

我该如何解决这个问题? 我需要这个代码在iOS 6,7和8中工作,并希望它看起来像你在导航控制器内部的视图之间来回看到的水平animation。

编辑:我接受的解决scheme有一个与iOS 6的错误,如果我能find一个解决scheme修复它,我会编辑这个职位。

编辑2:find它。 看来,因为我提出了一个zBar视图控制器,我需要使用此代码

 zbarController.wantsFullScreenLayout=NO; 

我设置cameraOverlayView后。

使用自定义animation呈现视图控制器:

 CATransition* transition = [CATransition animation]; transition.duration = 0.3; transition.type = kCATransitionMoveIn; transition.subtype = kCATransitionFromRight; [self.navigationController.view.layer addAnimation:transition forKey:kCATransition]; [self.navigationController pushViewController:reader animated:NO]; 

使用自定义animationclosures视图控制器:

 CATransition* transition = [CATransition animation]; transition.duration = 0.3; transition.type = kCATransitionReveal; transition.subtype = kCATransitionFromLeft; [self.navigationController.view.layer addAnimation:transition forKey:kCATransition]; [self.navigationController popViewControllerAnimated:NO];