2010-02-10 43 views
8

CATransition很不寻常。考虑下面的代码。CATransition是如何工作的?

CATransition* trans=[CATransition animation]; 
trans.duration=0.5; 
trans.type=kCATransitionFade; 
[self.holdingView.layer addAnimation:trans forKey:nil]; 
self.loadingView.hidden=YES; 
self.displayView.hidden=NO; 

注意,无处我告诉过,我想显示displayView而非loadingView过渡,所以意见必须以某种方式访问​​自己的过渡。任何人都可以更详细地解释这是如何工作的?

回答

11

将转场添加为动画时,隐式CATransaction开始了。从那时起,所有对图层属性的修改都将变为动画而不是立即应用。 CATransition执行此动画以在图层属性发生更改之前拍摄视图快照的方式,以及图层属性更改后视图外观的快照。然后它使用一个过滤器(在Mac上这是核心图像,但在iPhone上我猜测它只是硬编码数学),随着时间的推移在这两个图像之间进行迭代。

这是Core Animation的一个关键特性。您的绘制逻辑通常不需要处理动画。你被赋予了一个图形上下文,你可以完成它。系统随着时间的推移处理与其他图像的合成(或者在空间或其他方面旋转它)。因此,在改变隐藏状态的情况下,初始状态完全合成图像与最终状态堆肥图像混合。 GPU上的速度非常快,并且对视图所做的更改无关紧要。