2009-05-21 66 views
1

我想弄清楚如何拖動圖像,同時限制其沿着特定路徑的移動。iphone可可:如何沿着路徑拖動圖像

我嘗試了幾個技巧,包括沿着一條路徑的動畫,但無法讓動畫播放,暫停和向後播放 - 這似乎是不可能的。

任何想法?任何人 ?

+0

Hey..did你想通了如何做到這一點.. – 2013-06-12 08:28:11

+0

嘿你想通了,請幫助我,我有同樣的問題像你有。 – 2014-06-11 06:52:12

回答

3

你基本上試圖做的是將手指移動與「翻譯」過渡相匹配。

隨着用戶觸摸並開始移動手指,您希望使用當前的觸點值創建一個應用於您的UIImageView的轉換轉換。以下是你如何做到這一點:

  1. 在觸及下來,保存imageview的開始x,y位置。

  2. 移動時,計算從舊點到新點的增量。這是你可以鉗制值的地方。所以你可以忽略,比如y變化,只使用x deltas。這意味着圖像只會從左向右移動。如果您忽略x並使用y,那麼它只會上下移動。

  3. 一旦你有'新'計算/鉗制的x,y值,使用它來使用CGAffineTransformMakeTranslation(x,y)創建一個新的變換。將此轉換分配給UIImageView。圖像移動到那個地方。

  4. 一旦手指擡起,從原始的起點x,y,點和剝離點找出增量,然後調整ImageView的邊界並將變換重置爲CGAffineTransformIdentity。這不會移動對象,但會設置它,以便後續對ImageView的訪問使用實際位置,而不必爲變換保留調整。

沿網格上的運動是一件容易的事。只需在步驟2中舍入x,y值,使它們成爲網格大小的倍數(即循環到每10個像素),然後再傳遞它以進行轉換轉換。

如果您想使其更加平滑,請使用UIView動畫塊爲代碼分配過渡代碼。應對寬鬆和時間設置。圖像應該稍微拖後,但是從一個接觸點到另一個接觸點平滑地「橡皮筋」。

1

看到這個示例代碼:Move Me