我有一个CALayer,我只是在控制器的initWithNibName中创建并添加到我的视图控制器主视图的子视图中: 然后,我执行以下动画:
[CATransaction begin];
[CATransaction setAnimationDuration:2];
[logoLayer setOpacity:0];
[CATransaction commit];
如何判断此动画何时完成? performSelector:延迟2秒。方法似乎并不是“正确的方法”。
答案 0 :(得分:22)
根据doc,[CATransaction setCompletionBlock:]
可用于您想要的内容。
它说
一旦此事务组随后添加的所有动画都已完成(或已被删除),即可保证在主线程上调用完成块对象。如果在提交当前事务组之前未添加任何动画(或者将完成块设置为不同的值),将立即调用该块。
在begin
动画交易之前尝试添加类似的内容。
[CATransaction setCompletionBlock:^{
// Action after the animation completion
}];