Как запустить CABasicAnimation в потоке - PullRequest
0 голосов
/ 25 декабря 2011
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: вызывается только после завершения всего цикла.

Есть ли у кого-нибудьИдея об этом?
Теперь я подумал об этом, потому что делегатом анимации является self, контроллер представления.А анимация вызывается потоком, поэтому делегат не работает.Но я не знаю, как это изменить.Я пытался использовать поток в качестве замены, он все еще не работает.

Любое тело может помочь мне с этим?

Моя цель - когда анимация запускается, циклследует приостановить, пока анимация не закончится, тогда цикл должен быть продолжен.пока цикл не закончится.

1 Ответ

0 голосов
/ 26 декабря 2011

Вы уверены, что хотите запустить анимацию в потоке?Потому что он уже работает в своем собственном потоке.Как сказано в документе, CoreAnimation предоставляет

Абстрактный интерфейс анимации, который позволяет анимациям запускаться в отдельном потоке, независимо от цикла выполнения вашего приложения.цепная анимация?Если это так, посмотрите на эту тему: анимации цепочки

...