iphone Cocoa: как перетащить изображение по дорожке - PullRequest
1 голос
/ 21 мая 2009

Я пытаюсь понять, как можно перетащить изображение, ограничивая его движение по определенному пути.

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

Есть идеи? кто-нибудь?

Ответы [ 2 ]

3 голосов
/ 21 мая 2009

То, что вы в основном пытаетесь сделать, это сопоставить движение пальца с переходом «перевод».

Когда пользователь касается и начинает двигать пальцем, вы хотите использовать текущее значение точки касания для создания преобразования преобразования, которое вы применяете к UIImageView. Вот как бы вы это сделали:

  1. При касании сохраните начальную позицию изображения, координаты x, y.

  2. При движении рассчитайте дельту от старой точки к новой. Здесь вы можете зафиксировать значения. Так что вы можете игнорировать, скажем, изменение y и использовать только дельты x. Это означает, что изображение будет двигаться только слева направо. Если вы игнорируете x и используете y, то он двигается только вверх и вниз.

  3. Как только вы получите «новые» вычисленные / фиксированные значения x, y, используйте его для создания нового преобразования, используя CGAffineTransformMakeTranslation (x, y). Назначьте это преобразование для UIImageView. Изображение перемещается в это место.

  4. Как только палец поднимется, определите дельту от исходной начальной точки x, y, точки отрыва, затем отрегулируйте границы ImageView и сбросьте преобразование до CGAffineTransformIdentity. Это не перемещает объект, но устанавливает его так, чтобы при последующих обращениях к ImageView использовалась фактическая позиция и не приходилось постоянно корректировать преобразования.

Легко перемещаться по сетке. Просто округлите значения x, y на шаге 2, чтобы они были кратны размеру сетки (то есть округлили до каждых 10 пикселей), прежде чем передать его для преобразования преобразования.

Если вы хотите сделать его более плавным, окружите код, которому вы назначаете переход, анимационными блоками UIView. Возиться с настройками замедления и времени. Изображение должно немного затягиваться, но плавно «резинкой» от одной точки касания к следующей.

1 голос
/ 18 июля 2011

См. Этот пример кода: Переместить меня

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...