我有一个带有完全标准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/

10-11 22:28
查看更多