【问题标题】:Move CALayer via UIBezierPath通过 UIBezierPath 移动 CALayer
【发布时间】:2012-11-02 23:10:18
【问题描述】:

我有一个层会在 UIBezierPath 上从 A 点移动到 B 点。 我发现了很多示例,它们是指 CAAnimation 和 UIBezierPath。 但我只需要将我的图层从指定点移动到贝塞尔路径上的另一个点。

任何建议将不胜感激。

谢谢

【问题讨论】:

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


【解决方案1】:

希望这会有所帮助。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      定义汽车应遵循的路径(在本例中为 BezierPath) 绘制定义轨道的黑线; (不适用) 绘制轨道的白色虚线中心线; (不适用) 创建定义汽车的层; (你的图层) 沿路径为汽车设置动画。 (你问什么!)

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

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

      希望这会有所帮助!

      问候,

      豪尔赫。

      【讨论】:

      • 感谢您的回答,但这不是我要找的。我正在寻找在贝塞尔路径中的两点之间移动。路径不完整。
      • 虽然这在理论上可以回答问题,it would be preferable 在此处包含答案的基本部分,并提供链接以供参考。请编辑您的答案以更正此问题,然后标记您的帖子以请求取消删除
      猜你喜欢
      • 2011-11-05
      • 2012-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-11
      相关资源
      最近更新 更多