我正在尝试从两个视图控制器获得正确的选择,问题是当进行过渡时,第一个视图控制器进行了选择,但似乎在短时间内几乎重叠了一下,然后将其放置上面的新视图控制器。我在网上看了其他帖子,似乎没有人遇到这个问题。
class UIStoryboardSegueFromRight: UIStoryboardSegue
{
override func perform() {
let src = self.source as UIViewController
let dst = self.destination as UIViewController
let transition: CATransition = CATransition()
let timeFunc: CAMediaTimingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
transition.duration = 0.2
transition.timingFunction = timeFunc
transition.type = kCATransitionPush
transition.subtype = kCATransitionFromRight
src.view.window?.layer.add(transition, forKey: nil)
src.present(dst, animated: false, completion: nil)
}
}
我在以下图片中包含了该路线。源使用的是UINavController,该UINavController的根控制器为TabViewController。然后,将该TabViewController附加到UIViewController上,该UIViewController就是使用图片右图所示的自定义转换进行segue调用的控制器。
All_Feed ViewController which is the source
目标只是下面链接中显示的UIViewController。
答案 0 :(得分:0)
我对这种在视图控制器之间过渡的方法不是很熟悉。您是否尝试过使用UIViewControllerAnimatedTransitioning
? https://developer.apple.com/documentation/uikit/uiviewcontrolleranimatedtransitioning
与在segue中进行逻辑处理相比,这也使您可以以更可重用的方式抽象逻辑。
由于您希望源提供目标,因此将目标VC用作过渡委托,以连接UIViewControllerAnimatedTransitioning逻辑
由于您尚未共享任何视觉效果,因此我不会尝试翻译您要完成的动画,但也许本教程还可以帮助您了解如何以这种方式实现过渡:https://www.objc.io/issues/5-ios7/view-controller-transitions/ < / p>