ios – CAKeyframeAnimation手动进度

ios – CAKeyframeAnimation手动进度,第1张

概述我有一个UIView,它的后备层有一个CAKeyframeAnimation,一条简单的直线路径设置为`path`. 我可以将动画“冻结”,可以这么说,并手动更改其进度吗? 例如: 如果路径长度为100个点,则将进度(偏移量?)设置为0.45应使视图沿路径向下移动45个点. 我记得通过CAMediaTiming接口看到一篇做类似事情的文章(基于滑块的值沿路径移动视图),但即使经过几个小时的搜索,我 我有一个UIVIEw,它的后备层有一个CAKeyframeAnimation,一条简单的直线路径设置为`path`.
我可以将动画“冻结”,可以这么说,并手动更改其进度吗?
例如:
如果路径长度为100个点,则将进度(偏移量?)设置为0.45应使视图沿路径向下移动45个点.

我记得通过camediatiming接口看到一篇做类似事情的文章(基于滑块的值沿路径移动视图),但即使经过几个小时的搜索,我也找不到它.如果我以完全错误的方式接近这个,请告诉我.谢谢.

这里有一些示例代码,如果上面不够清楚的话.

- (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}
解决方法 这是基于乔纳森所说的,只是更重要的一点.动画设置正确,但滑块 *** 作方法应如下所示:
- (voID)slIDerDIDSlIDe:(UiSlider *)slIDer {    // Create and configure a new CAKeyframeAnimation instance    CAKeyframeAnimation *animation = ...;    animation.duration = 1.0;    animation.speed = 0;    animation.removedOnCompletion = NO;    animation.timeOffset = slIDer.value;    // Replace the current animation with a new one having the desired timeOffset    [_label.layer addAnimation:animation forKey:@"LabelPathAnimation"];}

这将使标签基于timeOffset沿着动画的路径移动.

总结

以上是内存溢出为你收集整理的ios – CAKeyframeAnimation手动进度全部内容,希望文章能够帮你解决ios – CAKeyframeAnimation手动进度所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1113754.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存