Domanda

Inizierò dicendo cosa voglio fare perché non sono sicuro di porre la domanda giusta. Sto realizzando una mappa basata su griglia e terrò una serie di oggetti per mantenere lo stato e la presentazione della mappa. Ogni oggetto sarà di una classe Tile. Dovrei sottoclassare UIView o sottoclasse NSObject e avere un ivar di UIView. Avevo anche in programma di avere un UIImageView all'interno di UIView per caricare l'immagine che rappresenta quel bit della mappa. Infine, volevo caricare la vista da un NIB.

Individualmente so come fare ognuna di queste cose ma non sono sicuro delle migliori pratiche. Qualche pensiero?

È stato utile?

Soluzione

Hai considerato i livelli di animazione di base? È possibile creare una vista singola con una griglia di livelli ciascuno con i propri limiti e posizione all'interno della vista. Sembra che potrebbe darti quello di cui hai bisogno. Al telefono, impostare i contenuti di un livello con un'immagine è semplice come questo:

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];

La variabile gridImage è un UIImage * che hai allocato da qualche parte. Dovresti solo calcolare i rects e le posizioni dei livelli e posizionarli di conseguenza.

Altri suggerimenti

Assicurati di avere una chiara definizione di quali particolari classi / oggetti comprendono il tuo modello, il tuo controller e la tua vista. I tuoi dati e la logica dei dati dovrebbero essere nel modello, il tuo display nella vista e dovresti legarli insieme al controller.

Il modo più semplice per realizzare una griglia è usare UIImageViews posizionati da un singolo controller. Il modello traccia le relazioni logiche tra i quadrati della mappa e le inoltra al controller che caricherà le immagini in UIIMageView. Il controller gestirà il caricamento di tutto da pennino.

Tuttavia, l'utilizzo di CALayers è il metodo di taglio preferito. Il modello di base, il controller, la relazione di visualizzazione è la stessa tranne per il fatto che i CALayer sostituiscono ImageViews.

Se ho capito bene, puoi creare una sottoclasse di UIImageView.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top