¿Cómo animar una línea del mismo modo que el efecto de onda que muestra Siri?

Me gustaría crear esta onda de sonido / pecado que se parece a la onda de audio dinámica Siri en iOS 7:

1

2

34

Sé cómo crear y animar UIBezierCurve sin forma y busqué en Google mucho, pero no he encontrado y no tengo idea de cómo lograr este efecto.

La línea comienza plana, que las olas y termina plana. No estoy woking con ningún file de sonido, basta con el efecto de agitar random.

Tal vez pueda probar la biblioteca de SCSiriWaveformView para iOS, basada en SISinusWaveView de OSX:

https://github.com/stefanceriu/SCSiriWaveformView

Creo que sería muy difícil hacer esto con una sola curva Bezier, probablemente sea mejor usar una curva NURBS o B-spline.

Para las imágenes de ejemplo que muestra, puede hacerlo con 7 puntos de control en un cúbico.
Probablemente, un cúbico uniforme, con las condiciones finales pinzadas / blandas. En otras palabras, el vector de nudos sería (0, 0, 0, 1, 2, 3, 4, 4, 4).

Para describir las posiciones del punto de control, las llamaremos P0..P6.

P0 y P6 serían los puntos finales de la curva.

P2..P4 estaría igualmente espaciado en X entre P0 y P6. Es decir, P2 sería 1/4 del path, P2 sería 2/4 del path, y P3 sería 3/4 del path entre P0 y P6, en la dimensión X.

P1 mantendría la curva saliendo de un lado. El valor Y de P1 siempre debe ser el mismo que el valor Y de P0. El valor X de P1 debe ser 1/3 del path entre P0 y P2.

P5 es análogo a P1, el mismo valor Y que P6 y X es 1/3 del path entre P6 y P5.

Luego simplemente anima los valores Y de P2..P4 y obtendrás una línea saltarina recta hacia los extremos.

No estoy seguro si iOS tiene una implementación NURBS o B-spline disponible para su uso. Si no hay una disponible, la buena noticia es que las curvas NURBS se pueden dividir en curvas Bézier. Para un ejemplo simple como este, es posible convertir el código duro de NURBS a Bezier, sin implementar una biblioteca completa.