Frage

Ich werde zunächst sagen, was ich tun will, weil ich nicht sicher bin, ob ich die richtige Frage bin gefragt. Ich mache eine rasterbasierten Karte und werde ein Array von Objekten halten, um den Zustand und die Präsentation der Karte zu halten. Jedes Objekt wird von einer Tile-Klasse sein. Soll ich Subklassen UIView oder sublass NSObject sein und eine Ivar von UIView haben. Ich habe geplant, auch eine UIImageView innerhalb des UIView zu haben, das Bild zu laden, die das bisschen der Karte darstellt. Schließlich wollte ich die Ansicht von einem NIB laden.

Individuell weiß ich, wie jedes dieser Dinge zu tun, aber nicht sicher über die beste Praxis. Irgendwelche Gedanken?

War es hilfreich?

Lösung

Haben Sie Core Animation Schichten in Betracht gezogen? Sie können eine einzelne Ansicht mit einem Raster von Lagen, die jeweils mit ihren eigenen Grenzen und Position innerhalb der Ansicht erstellen. Es klingt wie könnte es Ihnen, was Sie brauchen. Auf dem Telefon wird eine Schicht Inhalt mit einer Bildeinstellung ist so einfach wie folgt aus:

CALayer *gridLayer = [CALayer layer];
[gridLayer setContents:(id)[gridImage CGImage]];
[gridLayer setBounds:[gridImage bounds]];

// Position the layer's center a x:25.0 y:25.0 within the view
[gridLayer setPosition:CGPointMake(25.0f, 25.0f)];

[[view layer] addSublayer:gridLayer];

Die Variable gridImage ist ein UIImage * Sie haben irgendwo zugeordnet. Sie würden nur Ihre Schicht Rects und Positionen berechnen müssen und legen Sie sie entsprechend an.

Andere Tipps

Achten Sie darauf, eine klare Definition haben, von denen bestimmte Klassen / Objekte Modell umfassen, Steuerung und Ihre Ansicht. Ihre Daten und Datenlogik sollen in der Ansicht im Modell, Ihre Anzeige und Sie sollten sie zusammen mit dem Controller verbinden.

Der einfachste Weg, um ein Gitter zu erreichen, ist UIImageViews zu verwenden, die von einem einzigen Controller positioniert sind. Das Modell wird die logischen Beziehungen zwischen den Karten Plätzen verfolgen und an die Steuerung weiterleiten, die die Bilder in die UIImageView geladen werden. Der Controller handhabt alles von Spitze zu laden.

jedoch CALayers Verwendung ist die bevorzugte Methode Schneidkante. Das Basismodell, Controller, Ansicht Beziehung ist das gleiche, außer dass die CALayers die ImageViews ersetzen.

Wenn ich richtig verstehe, können Sie Unterklasse von UIImageView machen.

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