Обратный вызов завершения анимации для CALayer?
-
03-07-2019 - |
Вопрос
Используя iPhone CALayer, мне нужна анимация вращения для моего слоя духа, но мне также нужен обратный вызов для завершения анимации, хотите ли это сделать?
Я думаю, может быть, мне следует использовать CABasicAnimation, но я не знаю, как выполнять вращение с помощью CABasicAnimation, есть идеи?
Спасибо
Решение
Если вы установите делегат для CAAnimation, вы можете добавить метод обратного вызова:
- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag
Это вызывается, когда анимация завершена.Найдите примеры вращающейся анимации с помощью матрицы преобразования CGAffineTransform по этой ссылке:
http://iphonedevelopment.blogspot.com/2008/10/demystifying-cgaffinetransform.html
Другие советы
Кроме того, вы также можете выполнить аналогичный обратный вызов для анимации UIView, обернув вызов для поворота UIView в следующий блок кода.
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5f];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(rotationAnimationHasFinished:finished:context:)];
// Rotate the view here
[UIView commitAnimations];
а затем определение метода делегата
- (void)rotationAnimationHasFinished:(NSString *)animationID finished:(BOOL)finished context:(void *)context;
{
// Handle the completion of the animation
}
внутри вашего делегата, который будет делать все, что вам нужно, после завершения анимации.