Базовые анимационные обратные вызовы - PullRequest
2 голосов
/ 30 июня 2010

Я использую базовую анимацию для перехода между различными состояниями представления в моем приложении. Однако мне нужно найти способ выполнять различные задачи после завершения анимации. Я понимаю, что могу реализовать метод делегата и использовать

- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag;

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

Я могу подумать о некоторых утомительных решениях, таких как использование серии флагов и счетчиков, однако мне интересно, есть ли более эффективный и практичный способ обойти эту проблему.

Какие мысли есть?

1 Ответ

7 голосов
/ 30 июня 2010

Используйте метод setValue:ForKey для присвоения уникального имени каждой анимации.

[animation setValue:@"myUniqueName" forKey:@"name"];

Позже, в методе animationDidStop используйте это, чтобы узнать, какая анимация остановилась

-(void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)finished {
    if([[theAnimation valueForKey:@"name"] isEqual: @"myUniqueName"] && finished){
               //code
    } 
    if([[theAnimation valueForKey:@"name"] isEqual: @"otherName"] && finished){
        //code
    } 
}
...