[大帮助] VC出现时不会触发自定义过渡动画

时间:2018-01-09 23:33:30

标签: ios swift animation transition presentviewcontroller

:)

我想对17-custom-presentation-controller的源代码进行一些更改以制作自定义过渡动画,我所有的更改都在PopAnimator类中。

我的所有代码都在这里:https://github.com/hopy11/TransitionTest

这是我的更改:

在PopAnimator中添加一个新的实例变量来保存transitionContext:

var ctx:UIViewControllerContextTransitioning!

我改写了方法:

animateTransition(使用transitionContext:UIViewControllerContextTransitioning)

到此:

func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {
    let containerView = transitionContext.containerView
    let toView = transitionContext.view(forKey: .to)!

    //save transitionContext
    ctx = transitionContext

    containerView.addSubview(toView)

    let animation = CATransition()
    animation.duration = duration / 2

    animation.type = "cube"
    //use type kCATransitionReveal is not work too ...
    //animation.type = kCATransitionReveal

    animation.subtype = kCATransitionFromLeft
    animation.delegate = self

    containerView.layer.add(animation, forKey: nil)
}

3.最后我让类PopAnimator确认CAAnimationDelegate委托,并添加新方法:

func animationDidStop(_ anim: CAAnimation, finished flag: Bool) {
    if ctx != nil{
        //make transition complete
        ctx.completeTransition(true)
        dismissCompletion?()
    }
}

当运行App时,当detailVC解散时,过渡动画看起来很好,但在呈现detailsVC时没有任何反应!

demo

你可以看到上面的演示:当用户点击左下方的绿色视图时,它会显示详细信息VC,但没有动画发生!但是当解雇detailVC时,动画工作正常!

它出了什么问题? 以及如何解决它?

我的所有代码都在这里:https://github.com/hopy11/TransitionTest

非常感谢! :)

0 个答案:

没有答案