Standardmäßig dreht sich ein UIImageView nur um seinen Mittelpunkt. Wie bekomme ich es, um irgendeinen anderen Punkt im Bild zu drehen?Wie kann ich ein UIImageView in Bezug auf einen beliebigen Punkt (außer seiner Mitte) drehen?
Antwort
Eine Möglichkeit besteht darin, den Ankerpunkt der zugrunde liegenden Ebene des UIImageView zu ändern und sich darüber zu drehen. Sie können den Drehpunkt ändern in etwa wie folgt verwendet:
imageView.layer.anchorPoint = CGPointMake(0.25, 0.25);
anchor wird in Bezug auf den relativen Koordinaten innerhalb der Schicht definiert. Das heißt, (0,0) ist die obere linke Ecke der Ebene (auf dem iPhone, wo die UIView-Ebenen die Y-Koordinaten umgedreht haben) und (1,1) ist die untere rechte Ecke.
Durch das Verschieben des anchorPoint wird möglicherweise Ihr Bild verschoben, sodass Sie die Position möglicherweise später anpassen müssen.
Um das Image der Schicht über diesen neuen Ankerpunkt zu drehen, können Sie die CATransform3D Struktur für die Schicht in etwa wie folgt verwendet ändern können:
CATransform3D rotatedTransform = imageView.layer.transform;
rotatedTransform = CATransform3DRotate(rotatedTransform, 60.0 * M_PI/180.0, 0.0f, 0.0f, 1.0f);
imageView.layer.transform = rotatedTransform;
In diesem Beispiel wird eine inkrementelle Drehung von 60 Grad um den Ankerpunkt .
Alle Änderungen an einer Ebene werden standardmäßig animiert. Sie können diese Animation deaktivieren, indem Sie Ihre Änderungen an diesen Eigenschaften in einem CATransaction wie die folgende umschließenden:
[CATransaction begin];
[CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions];
// Code for changes here
[CATransaction commit];
- 1. Wie kann ich ein Bild zuverlässig um einen Punkt drehen?
- 2. Drehen eines SKShapeNode entlang seiner Mitte
- 3. Alles drehen außer UIImageView im Hoch-/Querformat
- 4. Drehen Osmdroid Karte um beliebigen Punkt
- 5. Drehen Sie einen Punkt um einen anderen Punkt in 2D
- 6. Wie kann ich ein UIImageView um 20 Grad drehen?
- 7. CCSprite um einen bestimmten Punkt drehen?
- 8. Ein div um einen Punkt drehen
- 9. Rechteck um einen Punkt drehen
- 10. Schreiben in Notepad umschließt einen beliebigen Punkt?
- 11. Rotationsmatrix über beliebigen Punkt
- 12. Wie kann ich einen linearen Gradienten drehen?
- 13. Wie zeichne ich einen Punkt innerhalb einer Instanz von UIImageView?
- 14. Wie kann ich ein Div in Bezug auf eine Leinwand drehen, die
- 15. Punkt um einen anderen Punkt in Grad drehen python
- 16. Drehen UIImageView im Uhrzeigersinn
- 17. Wie kann ich einen beliebigen Zweig archivieren?
- 18. Rechnerisch einen beliebigen Punkt auf einem n-Bereich Kommissionierung
- 19. Ich muss einen Punkt auf einem Bogen basierend auf einem Punkt berechnen, der nicht in der Mitte liegt
- 20. So drehen Sie einen Punkt mit transformers.py
- 21. Wie fixiere ich ein Element in der Mitte eines Viewports in Bezug auf das Containerelement?
- 22. IOS: drehen, um eine UIImageView
- 23. Drehen einer Kugel von Punkt zu Punkt
- 24. Rechteck um Mitte drehen
- 25. Bild auf Mitte drehen nicht glatt (Monodroid)
- 26. (Pygame/Python) Wie platziere ich ein Objekt auf meinem Bildschirm basierend auf der Mitte seiner Rect?
- 27. Bild von seiner Unterseite drehen
- 28. Wie kann ich drehen?
- 29. drehen, wie in einem Punkt CALayer
- 30. Swift - UIImageView Halten Sie in der gleichen Position auf drehen
gerade hinzufügen, ein paar Notizen hier für meine Zukunft selbst: '#import #import 'und Sie müssen auch das' QuartzCore'-Framework importieren. Vielen Dank. –
aber das bewegt das Bild wie du sagst. Ist es möglich, den Ankerpunkt einfach zu verschieben? – hfossli
@Fossli - Nein, die Position einer Ebene ist an ihren Ankerpunkt gebunden. Es ist jedoch relativ einfach herauszufinden, wie die neue Position für den Layer aussehen sollte, und sowohl den Ankerpunkt als auch die Position des Layers in einer nicht animierten Transaktion zu ändern. –