如何在线程中运行CABasicAnimation

时间:2011-12-25 15:45:42

标签: ios multithreading cabasicanimation

for(NSInteger i = 0; i < 10; i++)
{
    ....
    singleThread = [[NSThread alloc] initWithTarget:self selector:@selector(changeLayerBackground) object:nil];
    [singleThread start];
}

函数changeLayerBackground如下:

- (void) changeLayerBackground
{
    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"backgroundColor"];
    animation.delegate = self;
    ......
    [layer addAnimation:selectionAnimation forKey:@"animation"];
}

我发现只有在整个循环结束后才调用函数animationDidStop:finished:

有没有人对此有任何想法?
现在,我认为这是因为动画的委托是自我,视图控制器。并且动画由线程调用,因此委托不起作用。但我不知道如何改变它。我尝试使用该线程作为替代品,它仍然无法正常工作。

任何人都能帮助我吗?

我的目标是动画调用时,循环应该暂停直到动画结束,然后循环应该继续。直到循环结束。

1 个答案:

答案 0 :(得分:0)

您确定要在线程中运行动画吗?因为它已经在自己的线程中运行。正如文档所说,CoreAnimation提供

  

一个抽象动画界面,允许动画在a上运行   独立的线程,独立于应用程序的运行循环。

也许你只是想链接动画?如果是这样,请查看此主题:chaining animations