Создание подклассов UIView или сочинение с UIView
-
08-07-2019 - |
Вопрос
Я начну с того, что хочу сказать, потому что не уверен, что задаю правильный вопрос. Я делаю карту на основе сетки и собираюсь содержать массив объектов, чтобы сохранить состояние и представление карты. Каждый объект будет иметь класс 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.