:)
我想对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时没有任何反应!
你可以看到上面的演示:当用户点击左下方的绿色视图时,它会显示详细信息VC,但没有动画发生!但是当解雇detailVC时,动画工作正常!
它出了什么问题? 以及如何解决它?
我的所有代码都在这里:https://github.com/hopy11/TransitionTest
非常感谢! :)