我正在尝试创建一个自定义视图控制器容器,它将在屏幕底部显示抽屉,类似于Apple邮件或音乐应用程序,并且我希望用户能够点击它以过渡到全屏,或者上滑与之交互以显示内容。
我已经使用UIPanGestureRecognizer
来滑动抽屉并使其工作。
我可以通过将内容控制器添加为子控制器,将内容视图添加到层次结构中,并在适当时调用viewWillAppear:
和viewDidAppear:
来实现此目的。
但是我希望允许内容视图控制器与滑动一起动画(例如在viewWillAppear:
中的任何动画,就像与交互弹出窗口一样),因此我正在查看自定义模态演示和UIPercentDrivenInteractiveTransition
,但我遇到了困难,我看不到为什么会发生这种情况。 我设置了转换委托,返回自定义动画控制器和一个交互控制器,该交互控制器是一个UIPercentDrivenInteractiveTransition
对象。
我的抽屉是容器控制器的视图层次结构的一部分,自然地,我希望内容控制器的视图成为抽屉的子视图。 但是,当调用presentViewController:animated:completion:
时,一个新的UITransitionView
子视图被添加到UIWindow
中,应该是过渡动画发生的位置。 但是这会破坏我的UIPanGestureRecognizer
,用户无法执行滑动以打开抽屉。
我尝试创建自定义UIPresentationController
和其他控制containerView
应该位于层次结构中的位置的方法,但我无法更改其行为。
我正在尝试做的事情是正确的吗? 我错过了什么吗?
如果有人感兴趣,这是我的框架:LNPopupController