Pergunta

Vou começar dizendo o que eu quero fazer, porque eu tenho certeza se estou fazendo a pergunta certa. Eu estou fazendo um mapa baseado em grid e estou indo para realizar uma matriz de objetos para manter o estado e apresentação do mapa. Cada objeto será de uma classe Tile. Devo ser subclasse UIView ou sublass NSObject e ter um ivar de UIView. Eu também estava planejando ter um UIImageView dentro do UIView para carregar a imagem que representa esse bocado do mapa. Por último, eu queria carregar a vista de um NIB.

Individualmente eu sei como fazer cada uma dessas coisas, mas não tem certeza da melhor prática. Quaisquer pensamentos?

Foi útil?

Solução

Você considerou camadas Core Animation? Você pode criar uma visão única com uma grade de camadas, cada uma com os seus próprios limites e posição dentro da visão. Parece que pode lhe dar o que você precisa. No telefone, definindo conteúdo de uma camada com uma imagem é tão simples como isto:

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

O gridImage variável é um UIImage * você já alocado em algum lugar. Você só precisa calcular suas rects camadas e posições e colocá-los em conformidade.

Outras dicas

Certifique-se de que você tem uma definição clara do que particulares classes / objetos compreendem o seu modelo, seu controlador e seu ponto de vista. Sua lógica de dados e os dados devem estar no modelo, sua exibição na visualização e você deve amarrá-los juntos com o controlador.

A maneira mais simples de realizar uma grade é usar UIImageViews que são posicionados por um único controlador. O modelo irá monitorar as relações lógicas entre o mapa praças e transmitir que para o controlador que irá carregar as imagens para o UIImageView. O controlador irá lidar com o carregamento tudo de ponta.

No entanto, usando CALayers é o método preferido de ponta. O modelo básico, controlador, relacionamento vista é o mesmo, exceto que os CALayers substituir os ImageViews.

Se entendi direito, você pode fazer subclasse de UIImageView.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top