1

我有一个带有完全标准 UINavigationController 的应用程序,它使用从右向左滑动新视图控制器的默认转换。当我点击返回按钮时,它会从左向右滑动前一个视图控制器。这在 iOS 5.1 和 iOS 6 的 iPhone 和 iPad 上都可以正常工作。它也可以在 iOS 5.0 的纵向模式下工作。

但是,在iOS 5.0的横向模式下它不起作用。新的视图控制器正确地从右向左滑入,但是当我点击返回时,旧的以前的视图控制器从上到下滑入。

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

4

2 回答 2

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,但这与根本问题无关。

于 2013-05-21T16:23:47.483 回答
0

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

于 2013-05-10T00:03:57.447 回答