如何创建自定义UIViewController过渡动画?

Chr*_*s C 2 iphone animation uiviewcontroller ios

这个问题似乎得到了很多要求,但我从来没有找到一个确定的答案,关于是否可以像UIKit一样进行自定义转换.

我知道你可以做一些技巧,比如拍摄当前视图和即将到来的视图的截图,然后在动画下更改视图控制器时动画.但是,这需要相当多的内存,因为你基本上有2个完全额外的屏幕值(因为屏幕截图).

我正在寻找一种更优雅的方式来呈现具有自定义动画的视图控制器.或者,是否有更节省内存的方法来执行上述方法?

rde*_*mar 5

有几种方法可以实现这一点,具体取决于您想要转换的方式,控制器是否嵌入容器控制器等.在最简单的情况下,您有一个控制器,并且您想要转换到另一个控制器,可以通过以下步骤完成:

  1. 实例化新控制器(让我们称之为B,原来的A)
  2. 将B的视图添加为窗口的子视图(来自self.view.window)
  3. 将B的帧设置为屏幕外的所需方向或使其为alpha 0,或使其大小为零,具体取决于您想要的转换类型.
  4. 使用animateWithDuration做你想要的转换:动画:完成:删除A的视图(在完成块中)
  5. 在完成块中,使B成为窗口的根视图控制器