过渡画面从左到右?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了过渡画面从左到右?相关的知识,希望对你有一定的参考价值。
我想创建一个segue。我正在使用Swift。我希望新的View Controller从左侧滑入。这意味着之前的View Controller将从左向右滑出。我尝试过segue Push,Replace,Present Modally和Present作为Popover,但没有一个做左右转换。它们要么具有从右到左的过渡,要么从屏幕底部出现新屏幕。如何进行从左到右的过渡?谢谢。
答案
您可以编写一个不会太难的自定义转换,但如果您不想在此处使用该路由,则可以使用一个简单的修复方法。单击segue并取消选中/禁用segue上的动画。然后在prepareForSegue中使用它。
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let _ = segue.destination as? NextViewController{
let trans = CATransition()
trans.type = kCATransitionMoveIn
trans.subtype = kCATransitionFromLeft
trans.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
trans.duration = 0.35
self.navigationController?.view.layer.add(trans, forKey: nil)
}
}
您可以通过CATransition types探索其他选择。你可以和他们一起玩得很开心。现在我猜你想在下一个视图控制器中按下后退按钮。你必须更换后退按钮并拦截背面按下并弹出没有动画,这样你就可以添加自己的动画了。这就是看起来的样子。
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.leftBarButtonItem = UIBarButtonItem(title: "Back", style: .plain, target: self, action: #selector(backTapped))
}
@objc func backTapped() {
let trans = CATransition()
trans.type = kCATransitionMoveIn
trans.subtype = kCATransitionFromRight
trans.duration = 0.3
self.navigationController?.view.layer.add(trans, forKey: nil)
navigationController?.popViewController(animated: false)
}
另一个选择是使用UIViewControllerAnimatedTransitioning,但根据你的技术水平和动画的舒适度,我发现上面的一个简单的实现。
以上是关于过渡画面从左到右?的主要内容,如果未能解决你的问题,请参考以下文章
将 Push ViewController 动画更改为看起来像“pop”动画,从左到右进入