2013-01-11 128 views
2

我有一個UIImageView,我正在屏幕上移動,基於用戶刷卡。我做到這一點使用的Core Animation:核心動畫和UIImageView返回到開始位置

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:1.0]; 

movingView.frame = theRect; 

[UIView commitAnimations]; 

它總是開始時很好,但中途從其原來的位置轉到「theRect」的位置,其停止並且的UIImageView跳回到它的起點。它從來不是一回事。在跳回之前有時會幾乎完成,有時只是幾乎不動,然後跳回來。此後沒有其他代碼正在運行。我試過改變持續時間,這似乎並不重要。

如果我在補充:

[UIView setAnimationDidStopSelector:@selector(completeAnimation:finished:context:)]; 
[UIView setAnimationDelegate:self]; 

則其實際延遲,直到時間完成並運行選擇,即使圖像本身停止,幾乎立即返回到它的出發點。

希望有人能給我一些提示這裏可能發生的事情。

+0

我沒有在您發佈的代碼中看到任何異常。被觸發兩次的動畫是基於症狀的最佳猜測。 NSLog(@「hello」)在提交之前?你應該只看到一個「你好」。 – danh

+0

它只觸發一次。但是,我在這裏發現了這個問題。當我沒有選中故事板的「使用Autolayout」時,它應該可以正常工作。當它被檢查時,它不會。我不確定是否在這裏丟失了某些東西,如果這是一個錯誤,或者有一種編程方式來避免這種情況發生。如果有人知道,我很想聽聽如何保持Autolayout並做到這一點。 謝謝。 –

回答

1

如果使用自動佈局,則可以動畫改變約束,而不是動畫改變幀(因爲當重新應用約束時,原始位置將被恢復)。例如,請參閱Animating an image view to slide upwards

+0

我確定Autolayout有很好的理由,它對系統來說是新的,但每當我轉身時都有理由取消選擇Autolayout。它看起來過於複雜,以前管理視圖的方式似乎更簡單,更直接。有沒有一個很好的教程解釋了爲什麼Autolayout是一件好事(如果它是)?但是,謝謝你的例子。它有助於。 –

+0

@MichaelReiland我一定在這裏錯過了你的評論:我建議WWDC2012視頻包括[介紹](https://developer.apple.com/videos/wwdc/2012/?id=202),[自動佈局通過示例](https://developer.apple.com/videos/wwdc/2012/?id=232)視頻和[掌握Autolayout](https://developer.apple.com/videos/wwdc/2012/? id = 228)視頻。 – Rob

+0

這是我正在尋找的確切答案!一切工作正常我的iphone版本的應用程序,但我無法弄清楚爲什麼我的uiimageview不斷回到其起始位置,每當我有一個彈出窗口或其他行爲發生在ipad版本。我關閉了自動佈局功能,一切正常開始。 – TouchMint