我正在使用导航控制器的应用程序。我有一个特定的视图控制器,在导航栏中有一个左右按钮,每个按钮都延伸到不同的视图控制器。当我按下右键时,我只需拨打self.performSegue(withIdentifier: "ToDestination", sender: nil)
,当我回电时,我拨打_ = self.navigationController?.popViewController(animated: true)
。自定义segue过渡动画
我的问题是当我按下左按钮。我可以推动和弹出,但我希望过渡与右侧按钮相反。由于我按了左键,我想让segue从左到右转换,当我弹出时,我希望segue从右向左转换。
我能得到的转换通过做工作,我想要的方式:
//push
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: "SearchController") as! SearchController
let transition: CATransition = CATransition()
let timeFunc : CAMediaTimingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
transition.duration = 0.5
transition.timingFunction = timeFunc
transition.type = kCATransitionPush
transition.subtype = kCATransitionFromLeft
self.navigationController!.view.layer.add(transition, forKey: kCATransition)
self.navigationController!.pushViewController(vc, animated: true)
//pop
let transition: CATransition = CATransition()
let timeFunc : CAMediaTimingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
transition.duration = 0.5
transition.timingFunction = timeFunc
transition.type = kCATransitionPush
transition.subtype = kCATransitionFromRight
self.navigationController!.view.layer.add(transition, forKey: kCATransition)
_ = self.navigationController?.popViewController(animated: true)
这工作,但视图控制器之间转换时黑色闪光。有没有更好的方式来获得默认的过渡动画?