2012-11-08 8 views
5

Ich mag einen Imageview mit dem folgenden Code drehen:Warum CGAffineTransformRotate im automatischen Layout die animierte Ansicht verschieben?

[UIView animateWithDuration:.25 animations:^{ 
    self.imageView.transform = CGAffineTransformRotate(self.plusView.transform, M_PI_4); 
}]; 

die verdrahtet ist, dass: wenn ich diesen Code ohne Auto Layout laufen, alles in Ordnung ist. aber wenn Sie das automatische Layout verwenden, verschiebt sich die Bildansicht um ein Wurfpixel, bevor Sie drehen, warum?

Antwort

4

Wenn Sie das automatische Layout in Xcode 5 verwenden, müssen Sie eine Einschränkung hinzufügen, um die horizontale Mitte und die vertikale Mitte der imageView in ihrem Container zu fixieren. Wenn Sie Storyboards verwenden, können Sie dies problemlos mit den Constraint-Optionen durchführen. Sie müssen auch die Breite und Höhe mit Einschränkungen festlegen, wenn Sie nicht möchten, dass die imageView automatisch skaliert wird.

Pin the center of a view with constraints in Storyboard

Fix the size of a view with constraints in Storyboard

0

ich nicht den Ruf auf chazzwozzer Antwort zu kommentieren hatte (mein Konto habe Book Login mit den letzten Änderungen Reset). Diese Antwort funktionierte gut für mich, indem ich die Kontrolle, die transformiert wurde, in eine UIView verwandelte, die andere Einschränkungen aufwies. Dann wird das Steuerelement, das transformiert wurde, in dieser Ansicht auf Horizontal UND Vertikal zentriert gesetzt.

FYI .. die Verschiebung auf Transformation trat nicht auf später iOS 8 .. nur auf iOS 7.1.