UIView: wie Sie die "reset" - Transformationen. CGAffineTransformScale nicht so funktioniert wie ich es erwarten würde

Ich denke, meine Frage kann zusammengefasst werden, wie zum speichern und zurücksetzen der Transformation eines Blick. Aber dann vielleicht erklären, meine situation helfen könnte.

Habe ich, wenn ich den verwandelt unten, um einen Blick, eine nach der anderen (wie wenn ich diesen code an einen Schalter oder eine Schaltfläche). Ich bekomme genau das Ergebnis, das ich erwarten würde: die Waage schaltet um zwischen: eine Ansicht, ist 55-fache Größe der original-Ansicht und die Ansicht auf die ursprüngliche Skala. Werke Skala sub-Blick auf someView auch, nur wie ich will. Ad infinitum. Perfekt.

//tranformScale 1
someView.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.55, 0.55 );
//tranformScale 2
someView.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1.0, 1.0 );

Das Problem ist ich will mit diesem code (oder ähnliches) zu skalieren, einen sub-Bild von sich selbst.anzeigen, wenn ein iOS-Gerät geht in der Landschaft, passend zu den sub-Blick auf die Landschaft Bildschirm (und back-up, wenn Sie im hochformat). Es fast funktioniert, aber aus irgendeinem Grund, statt die Ausgabe Runden von Werten Werte für die frame-der Ansicht skaliert wird (wie dies bei einem test mit einer Schaltfläche zum Aufruf der Transformationen), zunehmend seltsame Werte produziert werden. Schließlich, nach etwa 4 umdrehungen der sub-Ansicht " fliegt aus dem Bild. Ich vermute, es hat zu tun mit sich selbst.Ansicht ändern der Form, aber dann wieder, wenn ich das log der Rahmen von selbst.Ansicht, daß es Form ist sehr vorhersehbar.

Übrigens ich bin zentrieren der Ansicht über autoresizingMask flexible Ränder, die nicht mit auto-layout. vielleicht sollte ich zentrieren Sie die Ansicht mit einer anderen Art der Berechnung?

Vielen Dank für das Lesen!

  • Sie können someView.transform = CGAffineTransformIdentity; um es zurückzusetzen, um nicht verwandeln. Es ist einfacher zu verstehen.
  • Danke, aber auch mit diesem bekomme ich seltsame Ergebnisse.
  • Sie wissen, dass der Rahmen falsch, wenn ein nicht-Identität, Transformation angewendet wird, richtig? Aus der Dokumentation der frame auf UIView: "Warnung:, Wenn Sie die transform-Eigenschaft ist nicht die Einheitsmatrix, ist der Wert dieser Eigenschaft ist nicht definiert und daher ignoriert werden sollten."
  • David - können Sie klären Ihre Aussage? Bedeutet das, dass die Transformation hat gegen das "original", damit der Rahmen genau zu sein (was bedeutet, dass mehrere/Stapel verwandelt, erzielen schlechte Ergebnisse? Ich bin auch der Umgang mit mehreren Transformationen und immer außergewöhnliche Ergebnisse zu.
InformationsquelleAutor Mrwolfy | 2013-01-08
Schreibe einen Kommentar