In meinem Experiment schließe ich diese:
%Vor%dreht die Ansicht im Uhrzeigersinn und
%Vor%dreht die Ansicht gegen den Uhrzeigersinn,
Aber das Dokument sagt:
Der Winkel im Bogenmaß, um den die affine Transformation gedreht werden kann. In iOS gibt ein positiver Wert die Drehung gegen den Uhrzeigersinn und ein negativer Wert die Drehung im Uhrzeigersinn an.
widersprechen diese einander?
Ihre Verwirrung ist ziemlich verständlich.
In Wahrheit repräsentiert ein positiver Winkel eine Drehung von der positiven X-Achse zur positiven Y-Achse. Ein negativer Winkel repräsentiert eine Drehung von der positiven X-Achse zur negativen Y-Achse.
Das "native" Core Graphics-Koordinatensystem ist dem Standard kartesischen Koordinatensystem nachempfunden, in dem die Y-Achse zunimmt nach oben auf der Seite. In diesem System stellt ein positiver Winkel eine Drehung gegen den Uhrzeigersinn dar:
Wenn Sie also Ihr eigenes CGContext
erstellen (zum Beispiel mit CGBitmapContextCreate
oder CGPDFContextCreate
), funktionieren die Rotationen wie erwartet.
Allerdings haben Computersysteme historisch ein Koordinatensystem verwendet, bei dem die Y-Achse auf der Seite nach unten zunimmt. In einem umgedrehten Koordinatensystem repräsentiert ein positiver Winkel eine Drehung im Uhrzeigersinn:
Beachten Sie, dass sich in beiden Koordinatensystemen ein positiver Winkel von der positiven X-Achse zur positiven Y-Achse dreht.
Es stellt sich heraus, dass UIKit das Koordinatensystem der Grafikkontexte umkehrt, die es für Sie erstellt. Dies umfasst den Grafikkontext, den er vor dem Senden von drawRect:
erstellt, und den Grafikkontext, den er in UIGraphicsBeginImageContext
erstellt. (Die Quartz 2D-Programmierleitfaden erläutert dies.) Sie können dies überprüfen, indem Sie sich die aktuelle Transformationsmatrix ansehen (mit CGContextGetCTM
). Sie werden sehen, dass es ein -1
in seinem Element d
hat, was bedeutet, dass die Y-Achse umgedreht ist.
A UIView
verwendet auch ein geflipptes Koordinatensystem zum Auslegen seiner Unteransichten, was sich auf die Bedeutung der Eigenschaft UIView
transform
auswirkt.
Tags und Links iphone rotation cgaffinetransform