【发布时间】:2015-11-05 10:20:40
【问题描述】:
当我在 NavigationController 中使用后退按钮弹出 ViewController 时,我想禁用动画。
我试过了:
override func viewWillDisappear(animated: Bool) {
super.viewWillDisappear(false)
}
但它仍然有动画。
【问题讨论】:
标签: ios swift navigationcontroller
当我在 NavigationController 中使用后退按钮弹出 ViewController 时,我想禁用动画。
我试过了:
override func viewWillDisappear(animated: Bool) {
super.viewWillDisappear(false)
}
但它仍然有动画。
【问题讨论】:
标签: ios swift navigationcontroller
在您想要拥有该按钮的控制器中:
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.leftBarButtonItem = UIBarButtonItem(title: "Back", style: .Plain, target: self, action: #selector(backTapped))
}
@objc func backTapped(sender: UIBarButtonItem) {
navigationController?.popViewControllerAnimated(false)
}
考虑到这种方式,您将丢失后退按钮上的
【讨论】:
#selector(backTapped),并在函数声明之前添加@objc。来源:stackoverflow.com/questions/39205613/…
只需在你必须弹出的视图控制器上使用它
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(false)
UIView.setAnimationsEnabled(false)
}
或者
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(false)
UIView.setAnimationsEnabled(false)
}
视图动画被完全删除。并且在弹出后不要忘记在您的下一个视图控制器上添加UIView.setAnimationsEnabled(true)。
【讨论】:
在哪个 ViewController 中你不想要动画,
添加以下行
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
UIView.setAnimationsEnabled(false)
}
override func viewDidDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
UIView.setAnimationsEnabled(true)
}
【讨论】:
如果你想自定义动画,可以试试这个:
override func viewDidLoad() {
super.viewDidLoad()
navigationController?.navigationBar.tintColor = UIColor.white
self.navigationItem.leftBarButtonItem = UIBarButtonItem(title: "◁", style: .plain, target: self, action: #selector(backTapped(sender:)))
}
// 带有淡入淡出动画
@objc func backTapped(sender: UIBarButtonItem) {
let transition: CATransition = CATransition()
transition.duration = 0.5
transition.timingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeIn)
transition.type = CATransitionType.fade
self.navigationController!.view.layer.add(transition, forKey: nil)
navigationController?.popViewController(animated: false)
}
//“◁”以这种方式添加:编辑 -> 表情符号和符号
【讨论】:
viewWillDisappear() 不处理动画,它只是。
如果您使用的是UINavigationController
self.navigationController?.popViewController(animated: false)
如果你只是使用UIViewController
self.dismissViewControllerAnimated(false, completion: nil)
【讨论】:
你可以试试这个
override func viewWillDisappear(animated: Bool) {
self.navigationController?popViewControllerAnimated(false)
}
【讨论】: