【问题标题】:how can I detect the completion of an animation triggered by CATransaction如何检测由 CATransaction 触发的动画的完成
【发布时间】:2012-01-28 23:05:57
【问题描述】:

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

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

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

【问题讨论】:

    标签: ios core-animation calayer catransaction


    【解决方案1】:

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

    它说

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

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

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

    【讨论】:

    • 该文档中的操作词是“随后”。不要认为(就像我第一次那样)完成块适用于整个事务。它只适用于设置后添加到事务中的动画。
    猜你喜欢
    • 1970-01-01
    • 2023-03-04
    • 2011-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多