如何让iOS使用正确的导航过渡?

时间:2013-05-09 23:48:32

标签: ios ipad ios5

我有一个带有完全标准UINavigationController的应用程序,使用默认转换从右到左滑动新视图控制器。当我点击后退按钮时,它会从左到右滑动上一个视图控制器。这适用于iPhone和iPad,在iOS 5.1和iOS 6中都可以在两个方向上使用。它也适用于iOS 5.0上的纵向模式。

但是,在iOS 5.0上的横向模式无法正常工作。新视图控制器从右向左正确滑入,但当我点击后退时,旧的前一个视图控制器从上到下滑入。

这非常迷惑,我无法想象这种行为来自哪里。我正在对视图控制器进行普通的普通推送和流行操作,在操作系统和设备以及方向的所有其他组合中都可以正常工作。那么这里发生了什么,我该如何解决呢?

2 个答案:

答案 0 :(得分:1)

嗯,我认为这只是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,但这与潜在问题无关。

答案 1 :(得分:0)

检查视图控制器上支持的方向 - 如果不支持横向,您将看到这种情况发生。