如何检测由CATransaction触发的animation的完成?

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

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

如何知道这个animation何时完成? performSelector:延迟2秒。 方法似乎并不是“正确的方式”去做。

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

它说

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

尝试在beginanimation交易之前添加这样的内容。

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