如何更改导航控制器的根控制器出现在屏幕上的方式?

Posted

技术标签:

【中文标题】如何更改导航控制器的根控制器出现在屏幕上的方式?【英文标题】:How to change the way in which the root controller of a navigation controller is appearing on screen? 【发布时间】:2017-06-30 18:23:35 【问题描述】:

导航控制器不是初始视图控制器。它在初始 VC 中被实例化,并提供了一个根控制器,即第二个 VC。当我调用当前视图控制器函数时,我无法更改这个新 VC 的呈现方式,它总是从底部出现。我没有找到如何让它从右到左。我试图改变谁从第二个 VC 到 nav con 调用 modalPresentaionStyle 并返回,但没有改变。 代码清单如下。感谢您的帮助。

@objc fileprivate func showRegisterScreen()  
    let registerAccountVC = RegisterAccountVC()
    let navigationController = UINavigationController(rootViewController: registerAccountVC)
    navigationController.modalPresentationStyle = .pageSheet
    present(navigationController, animated: true, completion: nil)

【问题讨论】:

【参考方案1】:

这将添加一个从右到左的自定义动画。

let transition = CATransition.init()
transition.duration = 0.4
transition.timingFunction = CAMediaTimingFunction.init(name: kCAMediaTimingFunctionEaseInEaseOut)
transition.type = kCATransitionPush
transition.subtype = kCATransitionFromRight
view.window?.layer.add(transition, forKey: nil)
present(navigationController, animated: false, completion: nil)

【讨论】:

以上是关于如何更改导航控制器的根控制器出现在屏幕上的方式?的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式创建的 rootviewcontroller 未显示分配的 viewcontroller 的内容

如何在窗口中添加视图,该视图将在每个视图控制器的滑动时显示?

导航控制器弹出动画时导航栏向上移动

在运行时更改 iOS 13 中的根视图控制器

以编程方式更改导航根视图目标 c

如何在swift3中更改导航控制器上的后退按钮标题?