2012-01-22 2 views
0

Я работаю над приложением, которое позволяет пользователю играть на одежде, добавляя к телу вещи, такие как шляпы, волосы, глаза и т. Д. Пользователь в основном перетаскивает элемент из меню, и я создаю изображение на экране с некоторой формой «addSubview: or insertSubview:belowSubview:/aboveSubview:».Как создать «слои» подзаголовка?

Вопрос в том, что некоторые предметы должны всегда отображаться ниже других. Например, «глаза» (синяя, коричневая, зеленая) графика всегда должны появляться над «глазными яблоками» (различные формы и выражения глаз). Тем не менее, я не заставляю пользователя следовать любому процессу, он может перетаскивать, как им заблагорассудится, поэтому addSubview: может быть не подходит, но, возможно, insertSubview: belowSubview:/aboveSubview: было бы, в зависимости от того, как вы могли бы ссылаться на который вы хотите добавить ниже или выше.

В идеале я бы следовал за такой сумкой: Аксессуары> Стили для волос> Брови> Глазные яблоки> Глаза ... и т. Д. Кто-нибудь имеет идеи о том, как это реализовать? Благодаря

ответ

1

Сделайте вид иерархии выглядеть следующим образом:

self.view 
├─ self.accessoriesView 
│ ├─ braceletView 
│ └─ toeRingView 
├─ self.hairStylesView 
│ ├─ blondeWigView 
│ └─ hairClipView 
├─ self.eyebrowsView 
│ └─ archedEyebrowView 
├─ self.eyeballsView 
│ ├─ bloodshotEyeballView 
│ └─ regularEyeballView 
├─ self.eyesView 
│ └─ greenEyesView 
├─ etc. 

Когда пользователь вытаскивает прическу из меню, добавить новый вид стиля волос как подвид из self.hairStylesView. Когда пользователь вытаскивает зеленые глаза из меню, добавьте вид новых глаз в качестве подсмотра self.eyesView.

Мнения, которые позже находятся в массиве subviews, являются «ближе» к пользователю - они рисуют сверху ранее в массиве subviews. Поэтому, если вы создаете представления группировки в коде, вы можете просто использовать addSubview:, если вы добавите их в правильном порядке. Или, если вы настроите свои взгляды в наконечнике, вы можете поместить их в правильном порядке в контур nib.

+0

Спасибо, это работает отлично. Однако, выполнив это, теперь у вас есть стек UIViews на представлении ViewController. Если ваши распознаватели жестов созданы в другом классе, вам нужен способ доступа к ним. Я использовал hitTest в подклассе, чтобы те взгляды проходили до следующего subview, если ничего не трогало: http://vectorvector.tumblr.com/post/2130331861/ignore-touches-to-uiview-subclass-but-not- to-its – user339946

+0

Я задавался вопросом, спросите ли вы об этом ... :) –

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