2009-11-21 17 views
0

美好的一天;如何在動畫將對象移出屏幕時保留滾動視圖中的對象

我有一個UIImageView,我圍繞一個大的UIView動畫。 UIView包含在UIScrollView中。現在,在UIView內的UIImageView的小動作動畫中,如果它通過了一定的閾值(靠近屏幕邊緣),我將手動滾動UIScrollView以重新對UIImageView進行中心對齊。該代碼是同步的,我爲UIImageView設置了動畫,然後滾動到指向UIScrollView。

我遇到問題的時候,有一個很長的移動動畫,整個滾動過程掙扎,我得到了很多跳過的幀。我不確定,我認爲這是由於我的同步代碼,我相信我需要一種方法來同時執行滾動和動畫,但我不知道該怎麼做。

有沒有辦法讓scrollview在任何時候都能聽到UIImageView的位置,並且當它通過閾值時居中,即使在執行動畫的時候?

順便說一下,我已禁用用戶滾動UIScrollView。

在此先感謝。

+0

好吧,這是一個長期的,只是一個瘋狂的想法,我沒有嘗試過自己,所以我不會提交它作爲答案:如何保持UIImageView靜止和移動它後面的UIView呢?你可能可以使用轉換來翻譯或縮放你的UIView,並同時轉換滾動視圖? – mahboudz 2009-11-22 06:46:49

+0

這是一個可能的解決方案,但是想法是允許UIImageView移動並且IUView只會在圖像太靠近邊緣並重新居中時纔會滾動。就可玩性而言,我覺得這個效果更好。你的建議(儘可能聰明),我認爲不會覺得正確。 – 2009-11-22 07:36:58

回答

0

對不起,我已經離開了這麼長時間,我很久以前解決了這個問題,但忘了發佈我的解決方案。

基本上,將UIScrollview傳遞給動畫對象(圖層或視圖)。動畫對象將自己作爲動畫的委託並實現methond「animationDidStart:(CAAnimation *)theAnimation」。

如果您在動畫對象和UIScrollView中保留目標位置,則可以計算「animationDidStart」方法中移動滾動視圖的位置。

請注意,如果您的scollview已被縮放,則必須縮放滾動視圖中的內容偏移量和目標位置。 (陷阱爲年輕球員)