2009-05-13 5 views
3

Ich versuche, die anchorPoint -Eigenschaft zu setzen, um eine Ansicht um eine gut definierte Achse zu drehen. Aber :Warum verhält sich der Ankerpunkt des Begrenzungsrechtecks ​​der Ebene so seltsam?

myView.layer.anchorPoint = CGPointMake(myView.layer.anchorPoint.x - 1.0, myView.layer.anchorPoint.y); 

If ich es verschieben von -1,0, wird es nicht nur 1 Einheit nach links bewegen. Stattdessen bewegt sich meine gesamte Ansicht um die Breite der Ansicht nach rechts.

Was für ein Koordinatensystem ist das? Es scheint invertiert zu sein. Aber auch die Einheiten stimmen nicht mit denen von zB myView.frame.size.width überein.

Antwort

12

anchorPoint ist eine normalisierte Position innerhalb Ihrer Ebene. Das heißt, (0.0, 0.0) ist die obere linke Ecke Ihres Layers (im umgedrehten UIView-Layer-Koordinatensystem des iPhones) und (1.0, 1.0) ist die untere rechte Ecke. (0.5, 0.5) ist die Mitte Ihrer Ebene. Diese Positionen sind größenunabhängig und somit lediglich relative Orte.

Dies macht es möglich, über diesen anchorPoint zu skalieren, was verwirrend wäre, wenn anchorPoint eine absolute Koordinate wäre.

+0

Danke. Ich musste darüber nachdenken, was Sie unter normalisierter Position innerhalb der Schicht verstehen. Aber jetzt verstehe ich es. Dies sind prozentuale Werte. – Thanks

+0

Edit: Nun, eine Art Prozentual. Nicht wirklich. – Thanks

+0

Ein Bruchteil der Gesamtlänge oder Breite wäre eine ziemlich enge Interpretation. Das ist wie bei CGColor, wo statt 0 bis 255 für jede der RGBA-Komponenten von 0.0 bis 1.0 zu gehen. "Normalisiert" ist ein bisschen ein technischer Begriff. –