CATransition如何运作?

时间:2010-02-10 00:56:57

标签: cocoa

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,因此视图必须以某种方式访问​​转换本身。任何人都可以更详细地解释这是如何工作的吗?

1 个答案:

答案 0 :(得分:12)

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

这是Core Animation的一个关键功能。您的绘制逻辑通常不需要处理动画。你得到了一个图形上下文,你画了它,你就完成了。系统随着时间的推移处理与其他图像的合成(或在空间中旋转,或其他任何)。因此,在改变隐藏状态的情况下,初始状态完全合成图像与最终状态合成图像混合。在GPU上速度非常快,对视图所做的更改并不重要。