CATransition
动画类型参考
UIViewAnimation动画与CATransition类动画
在navigationController.pushViewController/popViewController中使用CATransition
// push
let transition = CATransition()
transition.duration = 0.3
transition.type = "oglFlip"
transition.subtype = kCATransitionFromRight
navigationController?.view.layer.addAnimation(transition, forKey: kCATransition)
navigationController?.pushViewController(ShareUserViewController(user: user), animated: false)
// pop
let transition = CATransition()
transition.duration = 0.3
transition.type = "oglFlip"
transition.subtype = kCATransitionFromLeft
navigationController?.view.layer.addAnimation(transition, forKey: kCATransition)
navigationController?.popViewControllerAnimated(false)
在presentViewController中使用
let transition = CATransition()
transition.duration = 0.3
transition.type = "oglFlip"
transition.subtype = kCATransitionFromRight
UIApplication.sharedApplication().keyWindow?.layer.addAnimation(transition, forKey: kCATransition)
presentViewController(ShareUserViewController(user: user), animated: false, completion: nil)
// dismiss
let transition = CATransition()
transition.duration = 0.3
transition.type = "oglFlip"
transition.subtype = kCATransitionFromLeft
UIApplication.sharedApplication().keyWindow?.layer.addAnimation(transition, forKey: kCATransition)
dismissViewControllerAnimated(false, completion: nil)
CATransition结束时执行代码
animation.delegate = self
然后实现animationDidStop:finished:方法。