2009-05-21 9 views
1

Ich versuche herauszufinden, wie Sie ein Bild ziehen können, während Sie seine Bewegung entlang eines bestimmten Pfades beschränken.iphone Kakao: Wie man ein Bild entlang eines Pfades zieht

Ich habe versucht, mehrere Tricks einschließlich der Animation entlang eines Pfades, konnte aber nicht die Animation zu spielen und Pause und rückwärts spielen - so scheint das nicht in Frage.

Irgendwelche Ideen? jemand?

+0

Hey..did Sie es herausgefunden, wie es zu tun .. –

+0

Hey habe gedacht, dass du es aus mir bitte helfen, ich habe das gleiche Problem wie Sie haben. –

Antwort

3

Was Sie im Grunde versuchen zu tun ist, Finger Bewegung auf eine "Übersetzung" Übergang anzupassen.

Wenn der Benutzer den Finger berührt und den Finger bewegt, möchten Sie den aktuellen Berührungspunktwert verwenden, um eine Übersetzungstransformation zu erstellen, die Sie auf Ihre UIImageView anwenden. Hier ist, wie Sie es tun würden:

  1. Auf Touch-down, speichern Sie die Bildansicht Start x, y-Position.

  2. In Bewegung das Delta vom alten zum neuen Punkt berechnen. Hier können Sie die Werte festklemmen. Sie können also beispielsweise die y-Änderung ignorieren und nur die x-Deltas verwenden. Dies bedeutet, dass sich das Bild nur von links nach rechts bewegt. Wenn Sie das x ignorieren und y verwenden, bewegt es sich nur nach oben und unten.

  3. Sobald Sie die 'neuen' berechneten/geklemmten x, y-Werte haben, verwenden Sie sie, um eine neue Transformation zu erstellen, indem Sie CGAffineTransformMakeTranslation (x, y) verwenden. Weisen Sie diese Transformation der UIImageView zu. Das Bild bewegt sich an diesen Ort.

  4. Sobald der Finger angehoben ist, ermitteln Sie das Delta vom ursprünglichen Start x, y, Punkt und Abhebepunkt, passen Sie dann die Grenzen des ImageView an und setzen Sie die Transformation auf CGAffineTransformIdentity zurück. Dadurch wird das Objekt nicht verschoben, aber es wird so festgelegt, dass nachfolgende Zugriffe auf ImageView die tatsächliche Position verwenden und nicht für Transformationen angepasst werden müssen.

Das Verschieben auf einem Raster ist auch einfach. Runden Sie einfach die x, y-Werte in Schritt 2 ab, so dass sie ein Vielfaches der Rastergröße sind (d. H., Sie runden alle 10 Pixel ab), bevor Sie sie übergeben, um die Übersetzungstransformation durchzuführen.

Wenn Sie es besonders weich machen möchten, umgeben Sie den Code, dem Sie den Übergang mit UIView-Animationsblöcken zuweisen. Verwirren Sie mit den Beschleunigungs- und Timing-Einstellungen. Das Bild sollte von einem Berührungspunkt zum nächsten etwas, aber glatt 'Gummiband' ziehen.

+0

Yup, hört sich gut an, obwohl Sie vielleicht nur "Position" einstellen möchten, anstatt mit der Transformation zu spielen. –

1

dieses Beispielcode siehe: Move Me

Verwandte Themen