Как анимировать кадр слоя с CABasicAnimation?

Я предполагаю, что должен преобразовать CGRect в объект передать его fromValue?

Это - то, как я пробую его, но это не работает:

CABasicAnimation *frameAnimation = [CABasicAnimation animationWithKeyPath:@"frame"];
frameAnimation.duration = 2.5;
frameAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
frameAnimation.fromValue = [NSValue valueWithCGRect:myLayer.frame];
frameAnimation.toValue = [NSValue valueWithCGRect:theNewFrameRect];
[myLayer addAnimation:frameAnimation forKey:@"MLC"];
18
задан dontWatchMyProfile 23 May 2010 в 18:21
поделиться

1 ответ

Я полагаю, вам нужно изменить последнюю строку, чтобы заставить ее работать:

[myLayer addAnimation:frameAnimation forKey:@"frame"];

Вы также можете установить действие для слоя, чтобы все изменения кадров анимировались с вашей анимацией:

CABasicAnimation *frameAnimation = [CABasicAnimation animation];
frameAnimation.duration = 2.5;
frameAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];

myLayer.actions = [NSDictionary dictionaryWithObjectsAndKeys:frameAnimation, @"frame", nil];

В справочнике метода CALayer's actionForKey: вы можете найти, как слой ищет действия для анимации его свойств.

-7
ответ дан 30 November 2019 в 05:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: