动画替换 UINavigationController 的 viewControllers

Posted

技术标签:

【中文标题】动画替换 UINavigationController 的 viewControllers【英文标题】:Animate Replacing viewControllers for UINavigationController 【发布时间】:2016-10-27 20:55:54 【问题描述】:

我有一个菜单,允许用户在视图堆栈之间切换。我想做的是让 UINavigationController 通过幻灯片动画从一个堆栈切换到下一个堆栈。

所以,要向当前堆栈添加一个视图,我知道我可以这样做:

self.navigationController!.pushViewController(myController, animated: true)

这会将视图滑动到堆栈上,动画。

我知道我能做到这一点

self.navigationController!.viewControllers = newControllersStack

但这不是动画并且感觉很hacky,因为它只是注入堆栈流而没有任何适当的流。我想做的是这个

self.navigationController!.changeViewControllers(newControllersStack, animated: true)

有没有办法做到这一点?我查看了一个标签栏,但我必须隐藏标签(使用侧边菜单进行导航),即便如此,它也会在 UINavigationControllers 之间动画转换,而不是在单个导航控制器内的视图。

【问题讨论】:

UINavigationController.setViewControllers(_:animated:) 呢? 这是一个反模式。在导航堆栈中时,用户希望能够按照到达当前控制器的相同顺序遍历堆栈。我不建议以这种方式替换堆栈。 @LeoNatan 好吧。我怎么会错过。添加它作为答案,我会接受。这看起来正是我需要的。就我而言,这是有道理的。这是一个新的导航堆栈,类似于选项卡控制器,当他们从侧面菜单中选择某些内容时。 酷。添加为答案。 将接受 5 @LeoNatan。你这么快就完成了,我还没有达到接受答案的时间范围。 【参考方案1】:

使用UINavigationController.setViewControllers(_:animated:)

【讨论】:

以上是关于动画替换 UINavigationController 的 viewControllers的主要内容,如果未能解决你的问题,请参考以下文章

动画替换 UINavigationController 的 viewControllers

Android 替换开机动画

已弃用的 SMIL SVG 动画替换为 CSS 或 Web 动画效果(悬停、单击)

用另一个动画大小更改替换子视图

核心动画从左到右

MobX React 替换 componentWillReact() 以触发布局动画