2010-07-28 11 views
2

我使用的UIImageView創建一個簡單的動畫,一切完美的作品,但是當我使用startAnimating,動畫將運行一次(因爲我希望它),但回到第一幀。我希望動畫在最後一幀停止。UIImageView startAnimating:如何在系列中的最後一張圖片上停下來?

我用:

myAnimation.animationImages = myArray; 
myAnimation.animationDuration = 0.7; 
myAnimation.animationRepeatCount = 1; 
[myAnimation startAnimating]; 

我可能必須使用重載startAnimating方法?解決我的問題的最佳方法是什麼?

回答

0

這是非常惱人的 - 我想看到一個deleate屬性,以便我們可以找出動畫事件!

這裏是我如何在過去做了(有可能是一個更好的辦法!)

1)設置動畫圖像性能和啓動動畫(如在這個問題您的代碼)

2)安排一個NSTimer在'animationDuration'秒鐘內關閉

3)當計時器關閉時,將image屬性設置爲animationImages數組中的最後一個對象,然後將animationImages屬性設置爲nil。

編輯:Ron Srebro已經正確地指出了possilbe錯誤 - 如果計時器延遲都那麼動畫看起來是錯誤的。

我加入最後一幀的animationImages兩次固定這一點 - 這意味着,如果定時器被延遲,我們仍然顯示最後一幀,並且用戶不會注意到。

NB這將不是100%修復這個bug,但我從來沒有見過這種修復到位發生。它可能不適用於CPU密集型應用程序,因爲計時器可能會延遲超過一個幀持續時間:(

+0

我同意這很煩人,但你的建議實際工作的機會非常渺茫。我不認爲你可以指望NSTime r在圖像視圖顯示最後一幀的同時觸發。 – 2010-07-28 11:31:13

+0

哎呀,我忘了 - 我傾向於做的是重新添加最後一幀動畫陣列 - 這樣如果計時器是有點晚了,它仍然動畫,它看起來並不像它;)我會編輯我的答案! – deanWombourne 2010-07-28 11:50:21

8

在開始動畫之前,請在圖像視圖imageView.image = yourLastImage;中設置最後一張圖像,然後開始動畫。動畫是完整的圖像視圖將顯示你的最終圖像

至於NSTimer的東西,沒有其他的選擇知道什麼時候默認動畫已經結束所以如果你想在動畫完成後做任何事情,你必須依靠NSTimer as deanWombourne建議。

+0

謝謝。我將如何從animationView中設置的imageView中檢索最後一張圖片? (在UIImageView圖像下的API中說:「如果animationImages」屬性包含的值不是nil,則不使用此屬性的內容。) – Derek 2010-07-28 12:12:38

+0

哦,我明白了。對於任何想知道的人來說,它是: imageView.image = [imageView.animationImages objectAtIndex:int]; – Derek 2010-07-28 12:18:04

相關問題