我有一个带有完全标准UINavigationController的应用程序,使用默认过渡将新视图控制器从右向左滑动。当我按下“后退”按钮时,它会将上一个视图控制器从左向右滑动。在iOS 5.1和iOS 6的两个方向上都可以在iPhone和iPad上正常使用。在iOS 5.0的纵向模式下也可以使用。
但,在iOS 5.0上的横向模式上,不起作用。新的视图控制器正确地从右向左滑动,但是当我按Back时,旧的以前的视图控制器从上到下滑动。
这非常令人迷惑,我无法想象行为的根源。我正在执行视图控制器的普通香草推送和弹出操作,并且在操作系统和设备的其他所有组合以及方向中都可以正常工作。那么这里发生了什么,我该如何解决?
最佳答案
好吧,我认为这只是iOS 5中的一个错误,因为已在6中进行了修复。我在自定义PopViewControllerAnimated
子类中重写UINavigationController
,并执行以下操作:
//make a custom transition that does (very close to
var transition = CATransition.CreateAnimation ();
transition.Duration = 0.25f;
transition.Type = CATransition.TransitionPush;
transition.Subtype = CATransition.TransitionFromLeft;
this.View.Layer.AddAnimation (transition, "slide");
var ret = base.PopViewControllerAnimated (false);
this.View.Layer.RemoveAnimation ( "slide");
return ret;
请注意,我正在使用C#和Xamarin.iOS,但这与根本问题无关。
关于ios - 如何使iOS使用正确的导航过渡?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16473017/