2009-12-13 9 views

Antwort

24

auf zu erweitern, was, sagte Peter, würden Sie Code wie den folgenden verwenden möchten:

CGAffineTransform newTransform; 
newTransform = CGAffineTransformMakeRotation(1.57*2); 
((UIImageView*)[dsry objectAtIndex:0]).transform = CGAffineTransformScale(newTransform,.5,.5); 

Die CGAffineTransformMake ... Funktionen neue Transformationen von Grund auf neu erstellen, wo die anderen Transformationen verketten. Auf Ansichten und Ebenen kann jeweils nur eine Transformation angewendet werden. Auf diese Weise können Sie mehrere Skalierungs-, Drehungs- und Translationseffekte gleichzeitig in einer Ansicht erstellen.

Sie müssen aufpassen, in welcher Reihenfolge Transformationen verkettet werden, um den richtigen Effekt zu erzielen.

2

Nur eine dieser Arbeiten gleichzeitig.

Richtig, weil Sie die erste mit der zweiten ersetzt haben.

Wie kann ich eine Umwandlung speichern und dann eine andere anwenden?

Concatenate them together, und weisen Sie die resultierende Matrix der Eigenschaft zu.

Sie können eine Transformationsmatrix in einer Variablen vom Typ CGAffineTransform speichern; Sie können das für Zwischenschritte in komplexeren Transformationen verwenden oder den Code übersichtlicher machen (oder beides).

9

aus der Apple-Dokumentation:

CGAffineTransformConcat Gibt eine affine Transformationsmatrix konstruiert, indem zwei bestehende affine Transformationen kombiniert.

CGAffineTransform CGAffineTransformConcat (
    CGAffineTransform t1, 
    CGAffineTransform t2 
); 

Parameter T1 Die erste affine verwandeln.

t2 Die zweite affine Transformation. Diese affine Transformation ist mit der ersten affinen Transformation verkettet.

Rückgabewert Eine neue affine Transformationsmatrix. Das heißt, t '= t1 * t2.

Diskussion Verkettung kombiniert zwei affine Transformationsmatrizen von multipliziert sie zusammen. Sie könnten mehrere Verkettungen in Reihenfolge ausführen, um eine einzige affine Transformation zu erstellen, die die kumulativen Effekte mehrerer Transformationen enthält.

Beachten Sie, dass Matrixoperationen nicht kommutativ sind - die Reihenfolge, in der Sie verketten Matrizen ist wichtig. Das Ergebnis der Multiplikation von Matrix t1 mit Matrix t2 ist nicht notwendigerweise gleich das Ergebnis multipliziert Matrix t2 mit Matrix t1.

+0

Danke an alle. Ich habe gerade die CGAFfineTransforms genommen und es funktioniert super! – quantumpotato