我有一个带有完全标准UINavigationController的应用程序,使用默认转换从右到左滑动新视图控制器。当我点击后退按钮时,它会从左到右滑动上一个视图控制器。这适用于iPhone和iPad,在iOS 5.1和iOS 6中都可以在两个方向上使用。它也适用于iOS 5.0上的纵向模式。
但是,在iOS 5.0上的横向模式中无法正常工作。新视图控制器从右向左正确滑入,但当我点击后退时,旧的前一个视图控制器从上到下滑入。
这非常迷惑,我无法想象这种行为来自哪里。我正在对视图控制器进行普通的普通推送和流行操作,在操作系统和设备以及方向的所有其他组合中都可以正常工作。那么这里发生了什么,我该如何解决呢?
答案 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)
检查视图控制器上支持的方向 - 如果不支持横向,您将看到这种情况发生。