2009-05-12 12 views
43

Was muss ich tun, wenn ich eine UIImageView drehen muss? Ich habe eine UIImage, die ich um 20 Grad drehen möchte.Wie kann ich ein UIImageView um 20 Grad drehen?

Die Apple Docs sprechen über eine Transformationsmatrix, aber das klingt schwierig. Gibt es hilfreiche Methoden oder Funktionen, um das zu erreichen?

Antwort

89

Eine Transformationsmatrix ist nicht unglaublich schwierig. Es ist ganz einfach, wenn Sie die mitgelieferten Funktionen nutzen:

imgView.transform = CGAffineTransformMakeRotation(.34906585); 

(.34906585 20 Grad in Radiant)

+3

Dank! Und ich dachte wirklich, dass es kompliziert ist, nur wegen der "Transformationsmatrix";) – Thanks

-2

Soweit ich weiß, ist die Verwendung der Matrix in UIAffineTransform der einzige Weg, um eine Rotation ohne die Hilfe eines Drittanbieter-Framework zu erreichen.

1
 
_YourImageView.transform = CGAffineTransformMakeRotation(1.57); 

wo 1,57 Radian Wert für 90 Grad ist

99

Wenn Sie möchten, um nach rechts zu drehen, muss der Wert größer als 0 sein, wenn Sie nach links drehen möchten, zeigt den Wert mit dem Zeichen "-" an. Zum Beispiel -20.

CGFloat degrees = 20.0f; //the value in degrees 
CGFloat radians = degrees * M_PI/180; 
imageView.transform = CGAffineTransformMakeRotation(radians); 
+2

Dies sollte angekreuzt werden, es ist die beste Antwort bei weitem! – Supertecnoboff

+1

Grad Umwandlung ist ein wirklich schönes Plus, das sollte der beste sein! –

10

Swift Version:

let degrees:CGFloat = 20 
myImageView.transform = CGAffineTransformMakeRotation(degrees * CGFloat(M_PI/180)) 
+0

Derselbe Code (außer let) funktioniert auch für objective-c. –

1

Dies ist ein einfacher Formatierung Beispiel (20 Grad):

CGAffineTransform(rotationAngle: ((20.0 * CGFloat(M_PI))/180.0)) 
1

Hier ist eine Erweiterung für Swift 3.

extension UIImageView { 

    func rotate(degrees:CGFloat){ 
     self.transform = CGAffineTransform(rotationAngle: degrees * CGFloat(M_PI/180)) 
     } 
    } 

Verbrauch:

myImageView.rotate(degrees: 20) 
2

Swift 4,0

imageView.transform = CGAffineTransform(rotationAngle: CGFloat(20.0 * Double.pi/180)) 
Verwandte Themen