滑入/滑出子视图控制器在 Swift 中的父视图控制器上部分可见

Posted

技术标签:

【中文标题】滑入/滑出子视图控制器在 Swift 中的父视图控制器上部分可见【英文标题】:Slide in/out child view controller partially visible on parent view controller in Swift 【发布时间】:2016-11-30 14:27:48 【问题描述】:

我已经建立了两个独立的UIViewControllers:MainVC 和 2ndVC。现在我正在尝试连接它们并实现下图所示的效果: 加载后,2ndVC 应该在 MainVC 顶部部分可见(比如说屏幕的 1/4)。向上滑动 2ndVC 应覆盖整个屏幕,向下滑动时应返回起点。我在 MainVC 上有一些按钮,当 2ndVC 没有覆盖整个屏幕时,我希望它们保持活动状态。

2ndVC 的高度会根据数据动态变化。它有滚动视图,只有当它覆盖整个屏幕时才应该处于活动状态。

最好的方法是什么? 2ndVC 是否应该作为子视图控制器嵌入到容器视图中?我应该以某种方式在滑动时以编程方式对 2ndVC 的约束进行动画处理吗?

【问题讨论】:

为什么你不想使用UIView 而不是第二个UIViewController @ArtemNovichkov 由于其结构相当复杂,我将其构建为 UIViewController。在您发表评论后,我认为这样会复杂得多? 也许吧。您可以创建UIView 的子类并在其中实现所有需要的逻辑。 @bastek 我有一个问题,在我的类似设置中,我无法让第二个 VC 进行动画输入/输出。它只是跳进/跳出。您是否设法使动画正常工作,如果可以,您可以显示一些代码吗?谢谢! 【参考方案1】:

您可能正在寻找一个容器视图控制器:

https://developer.apple.com/library/content/featuredarticles/ViewControllerPGforiPhoneOS/ImplementingaContainerViewController.html

【讨论】:

以上是关于滑入/滑出子视图控制器在 Swift 中的父视图控制器上部分可见的主要内容,如果未能解决你的问题,请参考以下文章

从导航堆栈中弹出视图控制器时从右侧滑入

如何根据滑出菜单导航到不同的视图控制器

如何让 UIView / Menu 滑入和滑出? (使用 C# 而不是 Swift 的 Xamarin IOS)

视图的隐藏过渡与显示过渡不同

滚动视图,如导航控制器的过渡[重复]

将对象保持在 CoreAnimation 效果之上