我一直在尝试在呈现另一个视图控制器时进行自定义转换,并且我以两种方式成功。一种是通过使用 CGAfflineTransformIdentity,另一种是通过使用 CGAffineTransformMakeTranslation 推送 ViewController。
Apple 文档将 CGAfflineTransformIdentity 描述为单位单位矩阵。当我用单位矩阵转换视图时,我的动画是如何发生的?
在实际数学中,当我将一些东西与单位矩阵相乘时,我得到了相同的矩阵。
那么 CGAfflineTransformIdentity 是如何真正实现转换的呢?
func animateTransition(transitionContext: UIViewControllerContextTransitioning) {
let container = transitionContext.containerView()
let fromView = transitionContext.viewForKey(UITransitionContextFromViewKey)!
let toView = transitionContext.viewForKey(UITransitionContextToViewKey)!
let offScreenUp = CGAffineTransformMakeTranslation(0, -container.frame.size.height )
let offScreenDown = CGAffineTransformMakeTranslation(0, 0)
toView.transform = offScreenUp
container.addSubview(fromView)
container.addSubview(toView)
let duration = self.transitionDuration(transitionContext)
UIView.animateWithDuration(duration, delay: 0.0, usingSpringWithDamping: 1.0, initialSpringVelocity: 0.8, options: nil, animations: {
toView.transform = CGAffineTransformIdentity
//toView.transform = offScreenDown
}, completion: { finished in
// tell our transitionContext object that we've finished animating
transitionContext.completeTransition(true)
})
}