Обновление:
Здесь нет проблем.Оказывается, я заново добавлял анимацию каждый раз, когда перемещал точку.Был еще где-то в коде, и я просто полностью замять это.Пожалуйста, проигнорируйте этот вопрос.
end update
У меня есть UIView, который просто действует как контейнер для UIImageView и CAShaperLayer.Слой формы рисует круг, и я добавил анимацию пути к этому слою формы, чтобы сделать его импульсным.Я хочу иметь возможность пульсировать круг и одновременно перемещать вид контейнера, используя свойство center UIView.Однако, когда я устанавливаю свойство center в контейнере UIView, импульсная анимация возобновляется с самого начала независимо от того, где она находится в анимации.
Как предотвратить повторный запуск анимации импульса?
Анимация импульса:
CGRect startRect = CGRectMake(-10 + (self.bounds.size.width / 2),
-10 + (self.bounds.size.height / 2),
20,
20);
CGMutablePathRef fromPath = CGPathCreateMutable();
CGPathAddEllipseInRect(fromPath, NULL, startRect);
CGRect endRect = CGRectMake(-20 + (self.bounds.size.width / 2),
-20 + (self.bounds.size.height / 2),
40,
40);
CGMutablePathRef toPath = CGPathCreateMutable();
CGPathAddEllipseInRect(toPath, NULL, endRect);
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"path"];
animation.fromValue = (id)fromPath;
animation.toValue = (id)toPath;
CGPathRelease(fromPath);
CGPathRelease(toPath);
animation.duration = 2.0f;
animation.repeatCount = HUGE_VALF;
[self.myCircleLayer addAnimation:animation forKey:self.pathAnimationKey];
Переместить вид контейнера, выполнив:
self.myContainerView.center = newPoint;