如何使UIViewController从底部滑到顶部而又不褪色以前的视图?

时间:2019-02-17 19:41:10

标签: swift animation uiviewcontroller uinavigationcontroller uikit

我正在使用Swift创建一个新应用,并希望使用UINavigationController将UIViewController从底部滑动到顶部,但是我当前的解决方案使以前的视图消失了。

这种令人讨厌的淡入淡出看起来像这样:https://i.imgur.com/wAcO9IS.jpg

我正在使用Swift 4.2和XCode10。我正在使用iOS 12.0在iPhone 7 Plus上测试我的应用程序。

当前,我正在使用此解决方案从下往上推送视图:

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消失了。

2 个答案:

答案 0 :(得分:0)

有很多方法可以做到最好,我建议您只是看这些视频,这里我仅分享一个链接,但是您可以在链接中观看该视频,而获得另外两个部分:https://youtu.be/k-GvIqh5Xcs

我确信这无疑将是您提出问题的最佳解决方案。 ☺️

答案 1 :(得分:0)

您的淡入淡出效果是放置动画的图层。您太复杂了。只需实例化视图控制器并将其显示在现有视图控制器之上即可。

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)