首页 > 解决方案 > 带有流体/弹性笔画的圆圈

问题描述

我和我的团队正在为客户开发一个应用程序。我们正在尝试了解如何实现这种动画(仅参考圆圈笔划):

在此处输入图像描述

我们尝试使用 aCADisplayLink来设置和更改圆圈,但它会产生非流畅的结果。我们找不到从“组件”创建一个圆圈UIBezierPath并更改每个锚点的方法。

任何关于如何实现这种效果的建议,或者如何从不同的点构造一个圆,都将受到高度评价

最好的问候,
Roi 和团队

标签: iosuibezierpathcadisplaylink

解决方案


我建议使用 Catmull-Rom 样条。这些允许您仅使用曲线上的点创建平滑曲线,而贝塞尔曲线要求您定义不在曲线上的控制点。

一旦你有了开始和结束CGPaths ,就很容易创建CAAnimation从它开始到结束状态的路径(尽管CGPath只有在动画中的开始和结束路径具有相同数量和类型的点时,动画更改才能正确工作。 )

您可能也可以使用贝塞尔曲线,但您需要为圆生成控制点,并且它的形状是扭曲的。

查看这个使用 Catmull-Rom 样条线创建扭曲圆形的示例应用程序:

http://wareto.com/animating-shapes-using-cashapelayer-and-cabasicanimation

(用 Objective-C 编写,但技术在 Swift 中是相同的。)

在此处输入图像描述

一个带有 8 个控制点的 Catmull-Rom 样条曲线均匀分布在一个圆上,其中每个控制点中心的距离变化 ± r/12 似乎是正确的:

在此处输入图像描述


推荐阅读