我想创建一个segue。我正在使用Swift。我希望新的View Controller从左侧滑入。这意味着之前的View Controller将从左向右滑出。我尝试过segue Push,Replace,Present Modally和Present作为Popover,但没有一个做左右转换。它们要么具有从右到左的过渡,要么从屏幕底部出现新屏幕。如何进行从左到右的过渡?感谢。
答案 0 :(得分:1)
你可以编写一个不会太难的自定义转换,但是如果你不想在这里走这条路,那么这是一个简单的解决方案。单击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但是根据你的技能水平和动画的舒适度,我发现上面的一个简单实现。