Swift 全屏导航推送 Segue

Posted

技术标签:

【中文标题】Swift 全屏导航推送 Segue【英文标题】:Swift Full Screen Navigation Push Segue 【发布时间】:2018-03-08 15:38:42 【问题描述】:

我想实现类似于 Facebook 为特定帖子呈现 cmets 视图控制器的方式。在下图中可以看到,推送的新视图控制器显示为“全屏”(因为缺乏描述行为的更好方法)。在我看来,它更像是某种模态转场,而不是推式转场。当尝试在我自己的应用程序中重新创建它时,我无法实现整个导航栏都包含在演示文稿中。只有表示层次结构中的视图被更改。我希望第二个视图控制器完全是白色的(视图和导航栏),但两个视图控制器都应该具有默认的滑动返回行为。怎么可能呢?

【问题讨论】:

【参考方案1】:

他们可能正在做的是隐藏导航栏。

如果你设置navigationController?.navigationBar.isHidden = true(也可以在故事板的 UINavigationController 中的导航栏上设置),你可以达到相同的效果,制作一个常规的show segue 并使用performSegue(withIdentifier: "nextScreen", sender: nil) 显示它。然后,您可以制作自己的 UI 逻辑来显示后退按钮等。

【讨论】:

这行得通,但现在父视图控制器确实也隐藏了它的导航栏。我怎样才能重新打开它,以免“闪烁”? @pmax1:你必须在你的 UI 中添加另一个 UINavigationBar,将你的 viewcontroller 设置为委托并实现UIBarPositioningDelegate,特别是func position(for bar: UIBarPositioning) -> UIBarPosition 以在 iPhone X 的状态栏下扩展它,返回 .topAttached

以上是关于Swift 全屏导航推送 Segue的主要内容,如果未能解决你的问题,请参考以下文章

在没有 UINavigationController 的情况下推送 Segue 动画

自定义推送 segue 动画

无动画推送 segue

推送segue动画不起作用

UITableView推送segue多次触发

具有清晰背景的 Segue 推送动画在 iOS 7 上闪烁