从左到右的过渡屏幕?
Transition Screens from Left to Right?
我想创建一个 segue。我正在使用 Swift。我希望新的视图控制器从左侧滑入。这意味着之前的View Controller会从左向右滑出。我已经尝试过 segues Push、Replace、Present Modally 和 Present as Popover,但其中 none 执行从左到右的过渡。它们要么从右到左过渡,要么新屏幕从屏幕底部出现。如何进行从左到右的过渡?谢谢。
您可以编写一个不太困难的自定义过渡,但如果您不想走那条路,这里有一个简单的修复方法。单击 segue 和 unclick/disable 在 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,但根据您的技能水平和对动画的熟悉程度,我发现上述方法很容易实现。
我想创建一个 segue。我正在使用 Swift。我希望新的视图控制器从左侧滑入。这意味着之前的View Controller会从左向右滑出。我已经尝试过 segues Push、Replace、Present Modally 和 Present as Popover,但其中 none 执行从左到右的过渡。它们要么从右到左过渡,要么新屏幕从屏幕底部出现。如何进行从左到右的过渡?谢谢。
您可以编写一个不太困难的自定义过渡,但如果您不想走那条路,这里有一个简单的修复方法。单击 segue 和 unclick/disable 在 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,但根据您的技能水平和对动画的熟悉程度,我发现上述方法很容易实现。