Ios swift中的自定义右键segue

Ios swift中的自定义右键segue,ios,swift,xcode,uiviewcontroller,segue,Ios,Swift,Xcode,Uiviewcontroller,Segue,我正试图从两个视图控制器中获得一个正确的分段,问题是,当它进行转换时,第一个视图控制器进行分段,但它似乎出现故障,几乎在一瞬间重叠,然后将新的视图控制器放置在其上。我在网上看过其他帖子,似乎没有人有这个问题 class UIStoryboardSegueFromRight: UIStoryboardSegue { override func perform() { let src = self.source as UIViewController let

我正试图从两个视图控制器中获得一个正确的分段,问题是,当它进行转换时,第一个视图控制器进行分段,但它似乎出现故障,几乎在一瞬间重叠,然后将新的视图控制器放置在其上。我在网上看过其他帖子,似乎没有人有这个问题

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的根控制器为TabViewController。然后将该选项卡ViewController连接到UIViewController,UIViewController是使用图片右侧显示的自定义转换进行segue调用的控制器

目标只是一个UIViewController,如下面的链接所示


我不太熟悉这种在视图控制器之间转换的方法。您是否尝试过使用
UIViewControllerAnimatedTransitioning

这还可以让您以一种比在segue中更可重用的方式抽象逻辑

因为您希望源代码显示目标代码,所以可以将目标VC作为转换委托,以便连接UIViewControllerAnimatedTransitioning逻辑


由于您尚未共享任何视觉效果,我不打算尝试翻译您试图完成的动画,但本教程也可能帮助您了解如何以这种方式实现转换:

我尝试使用UIViewControllerAnimatedTransitioning,但没有成功,我刚刚编辑了这篇文章,以便更详细地展示我的设置的视觉效果。网上有没有一个动画示例,说明你正在尝试完成的过渡?UIViewControllerAnimatedTransitioning的“运气不佳”是什么意思?我很想知道更多,因为我坚信这是你真正想要使用的。对我来说,把礼物和礼物结合起来似乎有点奇怪。看起来你在与框架抗争,因为模态演示是为了更好地使用UIViewControllerImagedTransition而构建的UIViewControllerImagedTransitioning实际上起到了帮助作用,我只是看错了方向。你说的正确segue是什么意思?你是说一个推送序列吗?它看起来就像屏幕被推到了右/左