2013-11-04 5 views
13

Ich möchte diesen Sound/sin Welle erzeugen, die wie die dynamische Audio-Welle Siri in iOS 7 sieht hat:Wie animiert man eine Linie auf die gleiche Weise wie der wellenartige Effekt, den Siri zeigt?

1

2

3 4

Ich weiß, wie Erstellen und animieren UIBezierCurve Sin Shape und ich googelte viel, aber ich habe nicht gefunden und habe keine Ahnung, wie man diesen Effekt erzielt.

Die Linie beginnt flach, als Wellen und endet flach. Ich wocke nicht mit irgendwelchen Sounddateien, nur der Effekt des zufälligen Winkens würde genügen.

+0

Hallo Skiny ... Right Now i gleiche problem.I bin vor wurde Kurve mit Bezier implementiert, aber ich bin nicht damit zufrieden ... also bitte geben Sie mir einen Vorschlag, wenn Sie mit dieser Aufgabe fertig sind ... Vielen Dank im Voraus .. – Alex

+0

Hallo Alex, wie ich unten erläuterte, war ich mit den kubischen Kurven nicht zufrieden, ich spielte damit eine Bisschen, aber es war nur für meine Neugierde und eine andere Arbeit kam, so legte ich dies zur Seite und bin seitdem nicht mehr dazu zurückgekehrt. Sorry – Skiny

+0

Danke für Ihre Antwort Alter .... – Alex

Antwort

13

Vielleicht könnten Sie die Bibliothek des SCSiriWaveformView versuchen, für iOS, basierend auf OSX des SISinusWaveView:

https://github.com/stefanceriu/SCSiriWaveformView

+0

Das ist wunderbar, danke – Skiny

+0

Das ist großartig! Vielen Dank! – CSawy

+0

Dies ist für Mac OS X! nicht iOS –

3

Ich denke, es wäre sehr schwierig, dies mit einer einzigen Bezier-Kurve zu machen, es ist wahrscheinlich besser, eine NURBS- oder B-Spline-Kurve zu verwenden.

Für die Beispielbilder, die Sie zeigen, könnten Sie es mit 7 Kontrollpunkten auf einem Kubikmeter machen.
Wahrscheinlich eine einheitliche kubische, mit geklammerten/Bezier Ende Bedingungen. Mit anderen Worten, der Knotenvektor wäre (0, 0, 0, 1, 2, 3, 4, 4, 4).

Um die Kontrollpunktpositionen zu beschreiben, nennen wir sie P0..P6.

P0 und P6 wären die Endpunkte der Kurve.

P2..P4 wäre in X zwischen P0 und P6 gleichmäßig verteilt. Das heißt, P2 wäre 1/4 des Weges, P2 wäre 2/4 des Weges und P3 wäre 3/4 des Weges zwischen P0 und P6, in der X-Dimension.

P1 würde die Kurve gerade aus der Seite kommen. Der Y-Wert von P1 sollte immer gleich dem Y-Wert von P0 sein. Der X-Wert von P1 sollte 1/3 des Weges zwischen P0 und P2 sein.

P5 ist analog zu P1, gleicher Y-Wert wie P6 und X-Wert ist 1/3 des Weges zwischen P6 und P5.

Dann animieren Sie einfach Y-Werte von P2..P4 und Sie erhalten eine hüpfende Linie, die gerade an den Enden ist.

Ich bin mir nicht sicher, ob iOS eine NURBS- oder B-Spline-Implementierung zur Verfügung hat. Wenn es keine gibt, ist die gute Nachricht, dass NURBS-Kurven in Bezier-Kurven unterteilt werden können. Für ein einfaches Beispiel ist es möglich, die Konvertierung von NURBS nach Bezier zu programmieren, ohne eine vollständige Bibliothek zu implementieren.

+0

Hallo @tfinniga, thx für den Tipp. Ich experimentierte mit einer kubischen Kurve.Nun, die Ergebnisse sahen sehr ehm ... komisch aus, aber es ist nur eine Frage der Bearbeitung von Werten. Thx wieder :) – Skiny