如何让 UIViewController 从下往上滑动而不让之前的视图消失?

How to make UIViewController slide from bottom to top without fading previous view?

我正在使用 Swift 创建一个新应用程序,并希望使用 UINavigationController 从下到上滑动我的 UIViewController,但我当前的解决方案会淡出之前的视图。

这个烦人的淡入淡出看起来像这样:https://i.imgur.com/wAcO9IS.jpg

我正在使用 Swift 4.2 和 XCode 10。我正在 iPhone 7 Plus 和 iOS 12.0.

上测试我的应用程序

目前我正在使用此解决方案将视图从底部推到顶部:

let transition = CATransition()
transition.duration = 0.3
transition.timingFunction = CAMediaTimingFunction(name: 
    CAMediaTimingFunctionName.easeInEaseOut)
transition.type = CATransitionType.moveIn
transition.subtype = CATransitionSubtype.fromTop
navigationController?.view.layer.add(transition, forKey: nil)
navigationController?.pushViewController(LoginScreen(), animated: false)

以及这个从上到下推送的解决方案:

// same code
transition.type = CATransitionType.reveal
transition.subtype = CATransitionSubtype.fromBottom
// same code
navigationController?.popToRootViewController(animated: false)

我想将我的 UIViewController 从底部滑动到顶部,反之亦然,而不让以前的 UIViewController 褪色,但现在我的解决方案使以前的 UIViewController 褪色。

有很多方法可以做到最好 我建议你只看这些视频,在这里我只分享一个 link 但你可以在 link : https://youtu.be/k-GvIqh5Xcs

我相信这肯定是您问题的最佳解决方案。 ☺️

您的淡入淡出效果是放置动画的图层。你把自己搞得太复杂了。只需实例化视图控制器并将其呈现在现有视图控制器之上。

let loginScreenVC = storyboard?.instantiateViewController(withIdentifier: "LoginScreen") as! LoginScreen
loginScreenVC.modalPresentationStyle = .overCurrentContext
self.present(loginScreenVC, animated: true)
//might be as well:
//navigationController?.present(loginScreenVC, animated: true)

更新:

如果您想关闭它,只需调用:

self.dismiss(animated: true, completion: nil)