我有一个视图控制器,我正在使用以下目标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中工作,并希望它看起来像在导航控制器内的视图之间来回看时的水平动画。
编辑: 我接受的解决方案有一个iOS 6的错误,如果我能找到解决它的解决方案,我将编辑这篇文章。
编辑2: 找到了。看来,因为我提出了一个zBar视图控制器,我需要使用这个代码
zbarController.wantsFullScreenLayout=NO;
设置cameraOverlayView后。
答案 0 :(得分:11)
使用自定义动画呈现视图控制器:
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];
使用自定义动画解除视图控制器:
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];