通过UIBezierPath移动CALayer

时间:2012-11-14 12:47:23

标签: iphone ios cocoa-touch core-animation calayer

我有一个层将在UIBezierPath上从A点移动到B点。 我发现很多样本都是指CAAnimation和UIBezierPath。 但是我需要在bezier路径上将我的图层从指定点移动到另一个点。

enter image description here

任何建议将不胜感激。

谢谢

3 个答案:

答案 0 :(得分:3)

希望这会有所帮助。

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"];

答案 1 :(得分:2)

如果您的bezier路径是圆形或半圆形,则可以跳过路径,而是将该点添加到更大的方形层。将该点设置为距该较大方形层的中心的固定距离。然后你可以围绕中心旋转z轴上的较大层,无论你需要它移动多少度。似乎它会简化一些事情,虽然我不确定你还需要它做什么。

答案 2 :(得分:1)

我一直在寻找这样的事情和本教程,它展示了如何遵循特定的路径。它适用于汽车(CALayer)和UIBezierpath作为赛道,并按此顺序解决:

定义汽车应遵循的路径(在本例中为BezierPath) 绘制定义轨道的黑线; (N / A) 绘制轨道的白色虚线中心线; (N / A) 创建定义汽车的图层; (你的图层) 沿着路径动画汽车。 (你的问题!)

您可以在此处查看参考帖子: http://nachbaur.com/2011/01/07/core-animation-part-4/

您也可以在此处下载源代码: http://cdn5.nachbaur.com/wp-content/uploads/2011/01/CALayerAnimTest.zip?25881d

希望这有帮助!

的问候,

豪尔赫。