Я разрабатываю приложение, которое требует поворота колеса вокруг оси z с увеличением или уменьшением скорости колеса со временем. Я использую CABasicAnimation &, мой код выглядит следующим образом. В то время как я изменяю свойство скорости слоя на определенном интервале, он вызывает «дрожь» эффект колеса.Изменение скорости CALayer в CABasicAnimation при вращении колеса вызывает эффект рывков
/* ** */
CABasicAnimation* animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
animation.toValue = [NSNumber numberWithFloat:-2*M_PI];
animation.duration = 4.0f;
animation.repeatCount = INFINITY;
[animation setValue:@"left" forKey:@"side"];
[animation setDelegate:self];
animation.removedOnCompletion=NO;
animation.fillMode = kCAFillModeForwards;
animation.cumulative = YES;
imageLeft.layer.beginTime = CACurrentMediaTime();
/************/
В таймере я варьировать скорость CALayer в ImageView следующим образом, где dPlayedPercentage является переменной.
imageLeft.layer.speed=1.0+dPlayedPercentage;
[imageLeft.layer addAnimation:animation forKey:@"SpinAnimation"];
Я думаю, что это связано с тем, что позиция сбрасывается при изменении свойства скорости CALayer. Что я должен сделать, чтобы исправить это. Или любой другой способ сделать эту анимацию?
Добавление следующий код исправил рывок в анимации. imageLeft.layer.timeOffset = [imageLeft.layer convertTime: CACurrentMediaTime() fromLayer: nil]; \t imageLeft.layer.beginTime = CACurrentMediaTime(); \t imageLeft.layer.speed = 1.0 + dPlayedPercentage; – Augus