Вопрос

Я начну с того, что хочу сказать, потому что не уверен, что задаю правильный вопрос. Я делаю карту на основе сетки и собираюсь содержать массив объектов, чтобы сохранить состояние и представление карты. Каждый объект будет иметь класс Tile. Должен ли я иметь подкласс UIView или подкласс NSObject и иметь ivar UIView. Я также планировал иметь UIImageView внутри UIView для загрузки изображения, которое представляет этот бит карты. Наконец, я хотел загрузить представление из NIB.

По отдельности я знаю, как сделать каждую из этих вещей, но не уверен в лучшей практике. Есть мысли?

Это было полезно?

Решение

Рассматривали ли вы слои базовой анимации? Вы можете создать один вид с сеткой слоев, каждый со своими границами и положением в пределах вида. Похоже, это может дать вам то, что вам нужно. На телефоне установить содержание слоя с изображением так же просто, как это:

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

Переменная gridImage - это UIImage *, который вы где-то разместили. Вам всего лишь нужно рассчитать тросы и позиции вашего слоя и разместить их соответствующим образом.

Другие советы

Убедитесь, что у вас есть четкое определение того, какие конкретные классы / объекты составляют вашу модель, ваш контроллер и ваше представление. Ваши данные и логика данных должны быть в модели, ваш дисплей в представлении, и вы должны связать их вместе с контроллером.

Самый простой способ создания сетки - это использование UIImageViews, которые позиционируются одним контроллером. Модель будет отслеживать логические отношения между квадратами карты и передавать их контроллеру, который загрузит изображения в UIIMageView. Контроллер будет обрабатывать загрузку всего с кончика.

Однако использование CALayers является предпочтительным методом режущей кромки. Базовая модель, контроллер и отношение представления те же, за исключением того, что CALayers заменяют ImageViews.

Если я правильно понимаю, вы можете сделать подкласс UIImageView.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top