CAKeyframeAnimation Manual Progress
У меня есть UIView, у которого задний слой имеет CAKeyframeAnimation с простой прямой линией пути, установленной в качестве его `path`.
Можно мне анимациюзамороженный»так сказать, а вручную изменить свой прогресс?
Например: если длина пути составляет 100 точек, при установке прогресса (смещения?) На 0,45 представление должно двигаться на 45 пунктов вниз по пути.
Я помню, как видел статью, в которой было что-то похожее (перемещение представления по пути на основе значения из ползунка) через интерфейсы CAMediaTiming, но у меня нетЯ не смог найти его даже после нескольких часов поиска. Если я'Я подошел к этому совершенно неправильно, пожалуйста, дайте мне знать. Благодарю.
Вот's пример кода, если выше неДостаточно ясно.
- (void)setupAnimation
{
CAKeyFrameAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
UIBezierPath *path = [UIBezierPath bezierPath];
[path moveToPoint:_label.layer.position];
[path addLineToPoint:(CGPoint){200, 200}];
animation.path = path.CGPath;
animation.duration = 1;
animation.autoreverses = NO;
animation.removedOnCompletion = NO;
animation.speed = 0;
// _label is just a UILabel in a storyboard
[_label.layer addAnimation:animation forKey:@"LabelPathAnimation"];
}
- (void)sliderDidSlide:(UISlider *)slider
{
// move _label along _animation.path for a distance that corresponds to slider.value
}