如何在不使用presentViewController的情况下以模态方式呈现自定义视图?

时间:2015-05-19 08:27:39

标签: ios swift uiviewcontroller

是否可以使用addChildViewController以模态方式呈现视图控制器?我想以模态方式显示UIviewcontroller's视图,因此它与窗口层次结构下的任何视图重叠。我想在不使用self.presentViewcontroller的情况下执行此操作,因为我想构建我自己的动画,而不是使用预设的向上/向下翻转/等等。我尝试使用self.addChildViewcontroller(modal)self.view.addSubView(modal.view)但它会进入我的ChildViewController。当我使用self.view.window?.addSubview时,应用程序崩溃了。

是否可以使用addChildController以模态方式呈现UIViewcontroller?

我收录了我的示例代码。

https://github.com/cuongta/testcode

override func viewDidLoad() {
   super.viewDidLoad()

   var childVC = ChildViewController()
   var navVC = UINavigationController()
   navVC.viewControllers = [childVC]
   self.addChildViewController(navVC)
   self.view.addSubview(navVC.view)
}

1 个答案:

答案 0 :(得分:1)

您应该使用UIViewControllerAnimatedTransitioningUIViewControllerTransitioningDelegate来实现您的目标。

我认为这是 Apple 的最佳方式。

  

在对象中采用UIViewControllerAnimatedTransitioning协议   实现自定义视图控制器转换的动画

     

此协议中的方法允许您定义动画对象   创建用于打开或关闭视图控制器的动画   屏幕在固定的时间内。您使用此创建的动画   协议不得互动。要创建交互式过渡,   你必须将你的动画师对象与另一个对象结合起来   控制动画的播放时间。

您可以下载 Apple示例代码 here