2009-10-28 2 views
1

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

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

+0

ooph, полностью исключенный из тега 'iphone', вызывает крики. – rob5408

ответ

5

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

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 * вы выделили где-то. Вам просто нужно будет вычислить ваши прямоугольники и позиции и поместить их соответственно.

0

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

3

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

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

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

Смежные вопросы