我想创建一个segue。我正在使用Swift。我希望新的View Controller从左侧滑入。这意味着以前的View Controller将从左向右滑出。我已经尝试过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,但是根据您的技术水平和对动画的舒适度,我发现上述方法很容易实现。
关于ios - 从左到右过渡屏幕?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50420919/