Я предполагаю, что должен преобразовать 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"];
Я полагаю, вам нужно изменить последнюю строку, чтобы заставить ее работать:
[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:
вы можете найти, как слой ищет действия для анимации его свойств.