#ios #xcode #ios7 #core-animation #quartz-graphics
#iOS #xcode #ios7 #ядро-анимация #quartz-графика
Вопрос:
У меня есть явная анимация, в которой я хочу установить конечное значение, чтобы объект оставался в конечной точке. Но как я могу добиться этого при отложенной анимации: Вот код:
CAKeyframeAnimation *moveAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
moveAnimation.duration = 0.3;
moveAnimation.cumulative = YES;
moveAnimation.repeatCount = 1;
// Bounce
[moveAnimation setValues:[NSArray arrayWithObjects:
[NSValue valueWithCGPoint:[self getCoordinatePointForAnimationWithRadius:0 withIndex:i]],
[NSValue valueWithCGPoint:[self getCoordinatePointForAnimationWithRadius:radius 10 withIndex:i]],
[NSValue valueWithCGPoint:[self getCoordinatePointForAnimationWithRadius:radius - 5 withIndex:i]],
[NSValue valueWithCGPoint:[self getCoordinatePointForAnimationWithRadius:radius withIndex:i]], nil]];
[moveAnimation setKeyTimes:[NSArray arrayWithObjects:
[NSNumber numberWithFloat:0],
[NSNumber numberWithFloat:0.5],
[NSNumber numberWithFloat:0.75],
[NSNumber numberWithFloat:1.0], nil]];
[moveAnimation setTimingFunctions:[NSArray arrayWithObjects:
[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut], nil]];
moveAnimation.beginTime = CACurrentMediaTime() 1 (0.1 * i);
[layer addAnimation:opacityAnimation forKey:@"opacityAnimationUp"];
[layer addAnimation:moveAnimation forKey:@"moveAnimationUp"];
// That's not working correctly because of the delay
[layer setOpacity:1.0];
[layer setPosition:[self getCoordinatePointForAnimationWithRadius:radius withIndex:i]];
Спасибо!
С наилучшими пожеланиями из Германии, Крис
Ответ №1:
Похоже, не хватает только режима обратной заливки. Это приведет к отображению первого значения анимации сразу после ее добавления, даже если фактическая анимация задерживается:
moveAnimation.fillMode = kCAFillModeBackwards;
Комментарии:
1. Вау, это получилось. Спасибо, Дэвид ( 1)