我必须自定义2个不同的UIViewController之间的过渡,为此,我想重新实现[UIViewController presentModalViewController ...]。这个函数里面有什么?它是如何工作的?它有什么作用?
非常感谢,
万斯
最佳答案
-[UIViewController presentModalViewController:animated:]
在幕后分配魔法。
对于我的应用程序Tweet注意,我想通过从架子中视图的背面为新视图设置动画来展示模态视图控制器。 iBooks或多或少地做了什么。我试图覆盖默认实现,但最终在一个多步骤的解决方案中完成了该工作,该解决方案不会出现难看的骇客和警告:
实例化新的视图控制器。
将转换应用于新视图控制器的托管视图,以使其从其初始位置开始。
开始将视图动画化为未变换的“正常”位置。
等待动画完成,并作为一个单元执行:
从屏幕上删除刚刚动画的视图。
呼叫[self presentModalViewController:vc animated:NO]
。
最后一步很重要!过渡动画完成后,正常显示模态视图控制器,但不显示动画,并且将向用户显示,就像您进行了正确的动画演示一样。
通过自定义过渡退出时,或多或少会执行相同的操作,但顺序相反。