Pregunta

Comenzaré diciendo lo que quiero hacer porque no estoy seguro si estoy haciendo la pregunta correcta. Estoy haciendo un mapa basado en cuadrícula y voy a mantener una matriz de objetos para mantener el estado y la presentación del mapa. Cada objeto será de una clase Tile. ¿Debería estar subclasificando UIView o subclase NSObject y tener un ivar de UIView? También estaba planeando tener un UIImageView dentro de la UIView para cargar la imagen que representa ese bit del mapa. Por último, quería cargar la vista desde una NIB.

Individualmente sé cómo hacer cada una de estas cosas, pero no estoy seguro de la mejor práctica. ¿Alguna idea?

¿Fue útil?

Solución

¿Has considerado las capas de Core Animation? Puede crear una vista única con una cuadrícula de capas, cada una con sus propios límites y posición dentro de la vista. Parece que podría darte lo que necesitas. En el teléfono, configurar el contenido de una capa con una imagen es tan simple como esto:

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 variable gridImage es un UIImage * que ha asignado en alguna parte. Solo necesitaría calcular los niveles y las posiciones de sus capas y colocarlas en consecuencia.

Otros consejos

Asegúrese de tener una definición clara de qué clases / objetos particulares comprenden su modelo, su controlador y su vista. Sus datos y lógica de datos deben estar en el modelo, su pantalla en la vista y debe vincularlos con el controlador.

La forma más sencilla de lograr una cuadrícula es usar UIImageViews que están posicionados por un solo controlador. El modelo rastreará las relaciones lógicas entre los cuadrados del mapa y lo transmitirá al controlador que cargará las imágenes en el UIIMageView. El controlador se encargará de cargar todo desde la punta.

Sin embargo, usar CALayers es el método de vanguardia preferido. El modelo básico, el controlador y la relación de vista son los mismos, excepto que los CALayers reemplazan a los ImageViews.

Si entiendo bien, puedes hacer una subclase de UIImageView.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top