如何以与Siri显示的波浪效果相同的方式制作动画线条?

15
我想创建一个类似于iOS 7中Siri动态音频波形的声音/正弦波,如下图所示:

1

2

3 4

我知道如何创建和动画化UIBezierCurve正弦形状,并进行了大量搜索,但我没有找到任何方法来实现这种效果。
该线从平坦的状态开始,然后波动并结束于平坦状态。我没有使用任何音频文件,随机波动的效果就足够了。

嗨Skiny...现在我也遇到了同样的问题。我已经使用贝塞尔曲线实现了它,但我对此并不满意...所以如果你完成了这个任务,请给我建议...提前感谢你。 - Alex
嗨,Alex,正如我在下面评论中所说,我对立方曲线不满意,我稍微尝试了一下,但那只是出于我的好奇心,另外有一个工作出现了,所以我把这个放在一边,从那以后就没有再回来过。抱歉。 - Skiny
谢谢你的回复,伙计... - Alex
当然,很抱歉我不能提供更多帮助。 - Skiny
没关系,伙计,我会尝试的。 - Alex
3个回答

13

太棒了!谢谢! - CSawy
这是针对 Mac OS X 的!不是 iOS。 - iOS.Lover

3
我认为使用单个贝塞尔曲线实现这一点会非常困难,最好使用NURBS或B样条曲线。
对于您展示的示例图像,您可以在三次方程式上使用7个控制点来实现。可能是均匀的三次方程式,具有夹紧/贝塞尔端条件。换句话说,结点向量将是(0, 0, 0, 1, 2, 3, 4, 4, 4)。
为了描述控制点位置,我们将它们称为P0..P6。
P0和P6将是曲线的端点。
P2..P4将在X轴上平均分布在P0和P6之间。也就是说,P2应该是P0和P6之间的1/4,P2应该是P0和P6之间的2/4,而P3应该是P0和P6之间的3/4。
P1将使曲线保持从侧面直出。 P1的Y值应始终与P0的Y值相同。 P1的X值应在P0和P2之间的1/3处。
P5类似于P1,与P6的Y值相同,X值在P6和P5之间的1/3。
然后只需动画化P2..P4的Y值,您将得到一个在两端直线的弹性线。
我不确定iOS是否有可供使用的NURBS或B样条实现。如果没有可用的,则好消息是NURBS曲线可以分解为贝塞尔曲线。对于像这样的简单示例,可以硬编码从NURBS到Bezier的转换,而无需实现完整库。

嗨 @tfinniga,谢谢你的提示。我做了一些对立方曲线的实验。结果看起来有点奇怪,但只是编辑数值的问题。再次感谢 :) - Skiny

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接