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,因此视图必须以某种方式访问转换本身。有没有人能更详细地解释一下这是如何工作的?
发布于 2010-02-10 13:23:49
当您将过渡添加为动画时,将开始一个隐式CATransaction。从那时起,所有对图层属性的修改都将是动画效果,而不是立即应用。CATransition执行此动画的方式是在图层属性更改之前拍摄视图的快照,以及图层属性更改后视图外观的快照。然后它使用一个过滤器(在Mac上这是核心图像,但在iPhone上我猜这只是一个硬编码的数学)来随着时间的推移在这两个图像之间迭代。
这是Core Animation的一个关键特性。你的绘图逻辑通常不需要处理动画。你得到了一个图形环境,你画进去,你就完成了。该系统处理随着时间的推移将其与其他图像合成(或在空间中旋转,或其他任何方式)。因此,在改变隐藏状态的情况下,初始状态完全合成的图像与最终状态合成图像混合。在GPU上运行速度非常快,无论你对视图做了什么更改都无关紧要。
https://stackoverflow.com/questions/2233692
复制相似问题