5

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

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

我怎么知道这个动画什么时候完成?performSelector:延迟 2 秒。方法似乎不是解决它的“正确方法”。

4

1 回答 1

22

根据文档[CATransaction setCompletionBlock:]可用于您想要的。

它说

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

begin尝试在动画事务之前添加类似的内容。

[CATransaction setCompletionBlock:^{
    // Action after the animation completion
}];
于 2012-01-28T23:18:05.430 回答