2009-02-27 2 views
0

Я работаю над игрой iPhone и пытаюсь использовать UIScrollView для отображения некоторых значков, которые затем я хочу, чтобы пользователь мог перетащить прокручиваемую панель на другой вид (в основном, перетаскивая их из рук в игру на игровом поле). Проблема в том, что UIScrollView закрепил все за пределами собственных границ.iPhone SDK: отключение cllipping для UIScrollView

Вот картина того, что я пытаюсь сделать:

alt text

Функционально, это на самом деле работает, в том, что вы можете перетаскивать иконки до белой доски хорошо ... но вы не могут видеть их, когда вы перетаскиваете ... что неприемлемо.

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

Есть ли у кого-нибудь другие возможные решения? Или, может быть, какие-то альтернативные подходы? Я подумал, может быть, может быть, просмотр страницы может работать, но еще не пробовал ... и это совсем не так хорошо, как просмотр прокрутки.

Худший случай Я могу просто вернуться к тому, чтобы не пропустить прокрутку, но это действительно заслоняет некоторые из моих игровых механизмов, и я действительно не слишком взволнован этим.

ответ

7

Я думаю, что вы ищете свойство theBotBound для UIView. Я использовал его успешно с UIScrollView:

scrollView.clipsToBounds = NO; 

Однако перетягивания вы хотите сделать с точки зрения прокрутки в представлении игры может потребоваться, чтобы удалить вид значка с точки зрения прокрутки, поместите его в надтаблицы в позиции, соответствующей его видимому положению в прокрутке (рассчитывается с использованием прокрутки и изначального смещения), и отслеживает движение пальцев пользователя. При отпускании касания либо бросьте его на игровое представление в правильное положение, либо верните его в режим прокрутки.

+0

Удивительный, я искал такую ​​собственность и не мог найти ее для жизни. и да, это именно то, что я уже делаю (удаление значка с одного вида, а затем воссоздание нового на доске в правильном месте). –

+0

Итак, Брэд, это отлично работает для перетаскивания, спасибо! Мой новый вопрос, могу ли я обрезать представление панели (а не перетаскиваемые иконки, но представление контейнера, являющееся дочерним элементом UIScrollView) без обрезания представлений значков. Я предполагаю, что у меня не может быть этого в обоих направлениях, но хотелось бы попробовать. =) –

+0

Пока вы можете установить clipToBounds для просмотра прокрутки на NO, а затем YES для контейнера UIView, если ваши значки находятся в контейнере, то результат будет таким же, как если бы прокрутка отображала клиппинг.Если вы говорите только о баре над значками, тогда вы будете хороши. –

1

Я не уверен на 100%, я понимаю вопрос, но я думаю, вы должны заглянуть в z-порядок прокрутки и доски. Может быть, перетяжка просто идет за доску.

В противном случае было бы полезно увидеть все границы вашей иерархии взглядов.

Я также считаю, что лучшим решением для всего, что может быть, является создание «спрайта» для анимации под пальцем игрока - вы можете компенсировать точку рисования спрайта от сенсорного объекта, чтобы игрок мог видеть, что они перетаскивают.

+0

Хорошее предложение по z-порядку, я изучил это, и это не тот случай. Взгляд ребенка обрезается в любом направлении, даже если нет другого вида, чтобы быть позади. Идея спрайта - это то, что я кратко рассмотрел, я думаю, что сделаю это, если другое предложение не сработает. –

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