如何在不使用 presentViewController 的情况下以模态方式呈现自定义视图?
Posted
技术标签:
【中文标题】如何在不使用 presentViewController 的情况下以模态方式呈现自定义视图?【英文标题】:How can I present a custom view modally without using presentViewController? 【发布时间】:2015-05-19 08:27:38 【问题描述】:是否可以使用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)
【问题讨论】:
您能在此处发布崩溃代码 sn-p 并查明错误消息吗?帮助您而不是从某个地方下载项目会更容易 你可以使用 UIViewControllerAnimatedTransitioning,UIViewControllerTransitioningDelegate 类来制作你自己的自定义动画并使用 presentViewcontroller 你也可以检查一下:github.com/nferocious76/TestModal 我没有使用苹果提供的默认演示调用,只是一个简单的动画。 【参考方案1】:您应该使用UIViewControllerAnimatedTransitioning
和UIViewControllerTransitioningDelegate
来实现您想要的。
我认为这是 Apple 的最佳方式。
在对象中采用 UIViewControllerAnimatedTransitioning 协议 实现自定义视图控制器转换的动画。
这个协议中的方法让你定义一个动画对象,它 创建用于打开或关闭视图控制器的动画 在固定的时间内屏幕。您使用此创建的动画 协议不能是交互式的。要创建交互式过渡, 你必须将你的动画对象与另一个对象结合起来 控制动画的时间。
您可以下载Apple 示例代码 here
【讨论】:
以上是关于如何在不使用 presentViewController 的情况下以模态方式呈现自定义视图?的主要内容,如果未能解决你的问题,请参考以下文章
如何在封面视图和主页中使用“presentViewController”
如何使用 presentViewController 呈现 iOS 键盘扩展
如何使用委托给 self 调用 presentViewController?