快速定制自定义权利

时间:2018-08-17 14:18:33

标签: ios swift xcode uiviewcontroller segue

我正在尝试从两个视图控制器获得正确的选择,问题是当进行过渡时,第一个视图控制器进行了选择,但似乎在短时间内几乎重叠了一下,然后将其放置上面的新视图控制器。我在网上看了其他帖子,似乎没有人遇到这个问题。

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。

Post Page ViewController which is the destination

1 个答案:

答案 0 :(得分:0)

我对这种在视图控制器之间过渡的方法不是很熟悉。您是否尝试过使用UIViewControllerAnimatedTransitioninghttps://developer.apple.com/documentation/uikit/uiviewcontrolleranimatedtransitioning

与在segue中进行逻辑处理相比,这也使您可以以更可重用的方式抽象逻辑。

由于您希望源提供目标,因此将目标VC用作过渡委托,以连接UIViewControllerAnimatedTransitioning逻辑

由于您尚未共享任何视觉效果,因此我不会尝试翻译您要完成的动画,但也许本教程还可以帮助您了解如何以这种方式实现过渡:https://www.objc.io/issues/5-ios7/view-controller-transitions/ < / p>