CAAnimationGroup с CAKeyframeAnimation и CABasicAnimation
Я пытаюсь анимировать вид вдоль изогнутого пути и одновременно уменьшать его:
CAKeyframeAnimation *pathAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
pathAnimation.calculationMode = kCAAnimationPaced;
pathAnimation.fillMode = kCAFillModeForwards;
pathAnimation.removedOnCompletion = NO;
//Setting Endpoint of the animation
CGPoint endPoint = endCenter;
CGMutablePathRef curvedPath = CGPathCreateMutable();
CGPathMoveToPoint(curvedPath, NULL, viewOrigin.x, viewOrigin.y);
CGPathAddCurveToPoint(curvedPath, NULL, viewOrigin.x+200, viewOrigin.y-150, endPoint.x+100, endPoint.y+10, endPoint.x, endPoint.y);
pathAnimation.path = curvedPath;
CGPathRelease(curvedPath);
// Set up scaling
CABasicAnimation *resizeAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
resizeAnimation.toValue = [NSNumber numberWithDouble:0.4];
resizeAnimation.fillMode = kCAFillModeForwards;
resizeAnimation.removedOnCompletion = NO;
CAAnimationGroup *group = [CAAnimationGroup animation];
group.fillMode = kCAFillModeForwards;
group.removedOnCompletion = YES;
[group setAnimations:[NSArray arrayWithObjects: pathAnimation, resizeAnimation, nil]];
group.duration = 3.7f;
group.delegate = self;
[group setValue:self.myView forKey:@"imageViewBeingAnimated"];
self.myView.center = endCenter;
self.myView.transform = self.myViewTransform;
[self.myView.layer addAnimation:group forKey:@"savingAnimation"];
Проблема заключается в том, что вместо постепенного уменьшения вида при его перемещении он сразу же уменьшается, а затем движется по пути. Мне нужно уменьшить, как он движется, очевидно.
1 ответ
Решается так:
resizeAnimation.fromValue = [NSNumber numberWithDouble:1.0];
Я не понимаю, почему я должен это сделать. Похоже, он должен начинаться со значения по умолчанию fromValue текущего преобразования.