Frage

UIView hat die Eigenschaften frame, bounds, center, und origin, und Sie scheinen alle miteinander verknüpft.Die meiste Zeit beschäftige ich mich mit frame bei der Einstellung der position und Größe des UIView.Ich verstehe, dass frame ist die Verwendung von globalen Koordinatensystem und bounds ist mit Koordinate des lokalen Sicht (also zugehörige x-und y sind 0, aber nicht immer), aber es ist immer noch verwirrend für mich, wenn zu verwenden, was.

Unter welchem Zusammenhang (und was ist die richtige Zeit), die anderen Eigenschaften (bounds, center, origin) sollte verwendet werden?

War es hilfreich?

Lösung

Marco ' s Antwort oben ist richtig, aber nur, um zu erweitern auf die Frage, "unter welchen Zusammenhang"...

frame - dies ist die Eigenschaft, die Sie am häufigsten verwenden, für den normalen iPhone-Anwendungen.die meisten Steuerelemente angeordnet werden in Bezug auf das "mit" Kontrolle, so dass der Rahmen.origin entsprechen direkt denen die Steuerung muss zur Anzeige und Rahmen.- Größe zu ermitteln, wie groß das Steuerelement.

center - dies ist die Eigenschaft, die Sie wahrscheinlich konzentrieren sich auf sprite-basierte Spiele und Animationen, in denen Bewegung oder Skalierung auftreten.Standardmäßig animation und rotation basierend auf der Mitte der UIView.Es selten Sinn macht, zu versuchen, und verwalten Sie diese Objekte, indem Sie die frame-Eigenschaft.

Grenzen - diese Eigenschaft ist nicht eine Positionierung Eigenschaft, sondern definiert die drawable Bereich der UIView, die "relativ" zu den Rahmen.Standardmäßig ist diese Eigenschaft wird in der Regel (0, 0, Breite, Höhe).Ändern Sie diese Eigenschaft wird erlauben Sie zu zeichnen, außerhalb des Rahmens ist oder einzuschränken, die Zeichnung auf einen kleineren Bereich innerhalb des Rahmens.Eine gute Diskussion dazu findest du unter dem link unten.Es ist ungewöhnlich für diese Eigenschaft, manipuliert zu werden, es sei denn, es ist spezifisch anpassen müssen, um die Zeichnung region.Die einzige Ausnahme ist, dass die meisten Programme verwenden die [[UIScreen mainScreen] bounds] auf Start, um zu bestimmen, ist der sichtbare Bereich für die Anwendung und Einrichtung Ihrer ersten UIView Rahmen entsprechend.

Warum gibt es einen Rahmen, Rechteck und eine bounds-Rechteck in einer UIView?

Ich hoffe, dies hilft bei der Klärung der Umstände, unter denen jede Eigenschaft könnte genutzt.

Andere Tipps

Sie sind im Zusammenhang mit Werten und konsistent gehalten durch die Eigenschaft setter - /getter-Methoden (und mit der Tatsache, dass der Rahmen ist ein rein synthetisiert Wert, nicht begleitet von einer tatsächlichen Instanz-variable).

Die wichtigsten Gleichungen sind:

frame.origin = center - bounds.size / 2

(das ist das gleiche wie)

center = frame.origin + bounds.size / 2

(und gibt es auch)

frame.size = bounds.size

Das ist kein code, nur Gleichungen auszudrücken, die invariante zwischen den drei Eigenschaften.Diese Gleichungen auch angenommen, Ihre Ansicht zu transformieren, ist die Identität, die Standardeinstellung.Wenn nicht, dann Grenzen und Mitte halten die gleiche Bedeutung, aber Rahmens ändern können.Es sei denn du machst das nicht-rechten-Winkel-Rotationen, der Rahmen wird immer werden die transformierten Ansicht in Bezug auf die superview Koordinaten.

Dieses Zeug ist alles im detail erläutert mit einem hilfreichen mini-Bibliothek hier:

http://bynomial.com/blog/?p=24

Eigenschaften center, bounds und frame Ineinander verzahnt:die änderung wird update die andere, so verwenden Sie jedoch Sie wollen.Zum Beispiel, anstelle von ändern die x/y-Parameter von frame zentriert eine Ansicht, aktualisieren Sie einfach die center Eigenschaft.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top