如何检测CATransaction触发的动画的完成情况

时间:2012-01-28 23:05:57

标签: ios core-animation calayer catransaction

我有一个CALayer,我只是在控制器的initWithNibName中创建并添加到我的视图控制器主视图的子视图中: 然后,我执行以下动画:

  [CATransaction begin];
  [CATransaction setAnimationDuration:2];
  [logoLayer setOpacity:0];
  [CATransaction commit];

如何判断此动画何时完成? performSelector:延迟2秒。方法似乎并不是“正确的方法”。

1 个答案:

答案 0 :(得分:22)

根据doc[CATransaction setCompletionBlock:]可用于您想要的内容。

它说

  

一旦此事务组随后添加的所有动画都已完成(或已被删除),即可保证在主线程上调用完成块对象。如果在提交当前事务组之前未添加任何动画(或者将完成块设置为不同的值),将立即调用该块。

begin动画交易之前尝试添加类似的内容。

[CATransaction setCompletionBlock:^{
    // Action after the animation completion
}];