Was ist der beste Weg zu drehen CGPoint auf einem raster?
Will ich drehen einen CGPoint auf dem Bildschirm je nach Winkel und die rotation verankert ist auf einem anderen Punkt. Frage mich, was ist der effizienteste Weg, dies zu tun?
- Meinst du, dass Sie möchten, drehen Sie etwas, um einen Punkt herum?
- Ja offensichtlich von einem Ausgangspunkt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie auch verwenden:
EDIT: durchführen der rotation um benutzerdefinierte Punkt, den Sie tun müssen, wie Adam beschrieb in seiner Antwort. Mit CGAffineTransform es muss so Aussehen:
Verwenden 2D-rotation matrix. Wenn Sie möchten, zu drehen, einen Punkt gegen den Uhrzeigersinn um den Ursprung um einen Winkel von
angle
, dann würden Sie dies tun:Wenn Sie drehen möchten, über einen anderen Punkt als den Ursprung, müssen Sie zuerst subtrahieren Sie die center-rotation aus Ihrer Sicht, drehen Sie es mit der oben, und fügen Sie dann wieder in das Zentrum der rotation (das heißt Konjugation in matrix-Theorie).
Verwenden CGAffineTransform.
Lassen Sie auch Core Animation die es für Sie tun. Werfen Sie einen Blick auf die Apple docs auf Ebene geometrie und Transformationen in der Core Animation Programming Guide
Alles, was Sie tun müssen ist, legen Sie den anchorPoint der Schicht und dann können Sie die Transformation mit so etwas wie dies:
DegreesToNumber wandelt Grad in Bogenmaß und gibt ein NSNumber-Darstellung.
Ich bin mir nicht sicher, was Sie versuchen, genau das zu tun, aber oft Core Animation ist eine gute Wahl für Visualisierungen.
Mit Vladimir ' s Antwort, unten ist die Swift 3 Antwort: