我有一个层会在 UIBezierPath 上从 A 点移动到 B 点。我发现了很多示例,它们是指 CAAnimation 和 UIBezierPath。但我只需要将我的图层从指定点移动到贝塞尔路径上的另一个点。
任何建议,将不胜感激。
谢谢
我有一个层会在 UIBezierPath 上从 A 点移动到 B 点。我发现了很多示例,它们是指 CAAnimation 和 UIBezierPath。但我只需要将我的图层从指定点移动到贝塞尔路径上的另一个点。
任何建议,将不胜感激。
谢谢
希望这会有所帮助。
UIBezierPath *trackPath = [UIBezierPath bezierPath];
.
.
.
CAKeyframeAnimation *anim = [CAKeyframeAnimation animationWithKeyPath:@"position"];
anim.path = trackPath.CGPath;
anim.repeatCount = 1;
anim.duration = 2.0;
[layerToAnimate addAnimation:anim forKey:@"pathGuide"];
如果您的贝塞尔路径是一个圆形甚至半个圆形,您可以跳过该路径,而是将点添加到更大的方形图层。将该点设置为距该较大方形图层的中心的固定距离。然后,您可以围绕中心旋转 z 轴上较大的图层,无论您需要它移动多少度数。似乎它会简化一些事情,但我不确定你还需要它做什么。
我一直想做这样的事情并找到本教程,它展示了如何遵循特定的路径。它使用汽车(CALayer)和 UIBezierpath 作为赛道,并按以下顺序解决:
定义汽车应遵循的路径(在本例中为您的 BezierPath) 绘制定义轨道的黑线;(N/A) 绘制轨道的白色虚线中心线;(不适用)创建定义汽车的层;(您的图层)沿路径为汽车设置动画。(你问什么!)
您可以在此处查看参考帖子:http: //nachbaur.com/2011/01/07/core-animation-part-4/
你也可以在这里下载源代码: http ://cdn5.nachbaur.com/wp-content/uploads/2011/01/CALayerAnimTest.zip?25881d
希望这可以帮助!
问候,
乔治。