Ich versuche, ein UIImageView
zu animieren, um gegen den Uhrzeigersinn zu rotieren, wenn ein Benutzer es berührt und seinen Finger darauf im Uhrzeigersinn bewegt.
Grundsätzlich möchte ich, dass die UIImageView nach dem Ende der Berührung wieder in ihre ursprüngliche Position zurückkehrt und sich gegen den Uhrzeigersinn bewegen sollte.
Das Problem, das ich habe, ist, dass jedes Mal, wenn der Winkel (in Grad) größer als 180 ist, das Bild im Uhrzeigersinn zurück in seine ursprüngliche Position gedreht wird. Es geht scheinbar den kürzesten Weg zurück. Für Winkel von 179 Grad oder weniger dreht sich das Bild gegen den Uhrzeigersinn (was ich brauche).
Ich habe beide Teile des Codes ausprobiert und sie verhalten sich genauso. Irgendwelche Vorschläge?
HINWEIS: Hier ist die Winkelvariable ein Double und ihre Initialisierung ist gleich Null und sie bleibt 0 in meinem Code
%Vor%Ich habe versucht, dieser Beitrag und es gibt ein paar Probleme damit
Ich hatte ein ähnliches Problem, überprüfen Sie die akzeptierte Antwort, es könnte Ihnen helfen:
Drehen Sie einen UIView um einen Winkel im Uhrzeigersinn mehr als 180 Grad
Als Reaktion auf Kommentare hilft Ihnen das vielleicht:
In meinem Code verwende ich eigentlich
%Vor%statt
%Vor%Die Drehung erfolgt immer gegen den Uhrzeigersinn, wenn der toValue kleiner ist als der fromValue. Es spielt keine Rolle, ob deine Werte positiv oder negativ sind, nur die Beziehung zwischen ihnen.
Finde heraus, was dein Startwinkel ist, finde heraus, in welche Richtung du drehen willst und finde heraus, wie dein Endwinkel ist. Stellen Sie sicher, dass es kleiner als Ihr Startwinkel ist, wenn Sie gegen den Uhrzeigersinn gehen wollen. Hier ist der Code, den ich für die Animation eines Uhrzeigers im Uhrzeigersinn von 12:00 Uhr bis zur aktuellen Uhrzeit verwende.
%Vor% Die Technik, die ich verwendet habe, besteht darin, den Drehwinkel durch 2 zu teilen und die Drehung in zwei separate Animationen aufzuteilen, die durch den Parameter completion:
von animateWithDuration:delay:options:animations:completion:
verbunden sind. Da die Ansicht jedoch an ihre aktuelle Position gedreht wurde, müssen Sie mit dieser Position beginnen und "nicht rotieren" zurück auf Null, während Sie versuchen, CCW von Null zu drehen.