2009-05-21 4 views
1

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

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

Любые идеи? кто угодно ?

+0

Hey..did вы догадались, как это сделать .. –

+0

Эй ты понял это, пожалуйста, помогите мне, у меня есть такая же проблема, как и у вас есть. –

ответ

3

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

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

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

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

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

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

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

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

+0

Yup, звучит неплохо, хотя вы можете просто установить 'position' вместо messing w/transform. –

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