2011-05-27 81 views
1

我目前有一個應用程序,它將顯示分配給用戶執行特定操作的時間。目前很簡單,使用UILabel顯示剩餘時間。倒計時使用圖像

我想給接口添加一點光澤,並顯示圖形倒計時,這對用戶來說更具吸引力。

我不知道如何做到這一點,但我的理論如下: 我知道我倒數的最大值是999.所以我可以創建3個UIImageView來表示每個數字。 計時器每秒更新一次剩餘的倒計時值,然後將UILabel設置爲該值。我可以在理論上,拆分此字符串成組成的數字(或循環中的字符串的字符),並根據傳入的數字一個「數字」圖像加載到相應的UIImageView

我的問題:

  1. 我會提及的方法是 高效?

  2. 鑑於 的情況,這是最好的方法嗎?

  3. 我怎樣才能將圖像變化動畫 結束?理想情況下,我希望它的 新圖像從圖像視圖頂部的 上滑入,而其替換的 圖像從底部滑出 。這是否可能是 ?

只是爲了澄清,我不是在尋找某人爲我編寫代碼,只是在我的實際實現中尋找幾個指針。

非常感謝您花時間閱讀本文。

編輯,看起來這裏的帖子How to animate the change of image in an UIImageView?幫助我動畫的實際圖像。但我仍然希望就我提議的實施方案獲得任何建議。

回答

0

您的基本方法是健全的。請注意以下幾點:

對於倒數計時器,請勿減少NSTimer中的剩餘時間。相反,始終使用「現在減去開始時間」。如果系統繁忙,NSTimer可能無法按計劃啓動。閱讀NSTimer中的「重複與非重複定時器」以瞭解它們的工作原理。

對於這樣的問題,我喜歡我的名字與像digit0.png,digit1.png等名稱的文件。然後,你可以將它們像這樣:

NSString *imageName = [NSString stringWithFormat:@"digit%d.png", digit]; 
self.imageView.image = [UIImage imageNamed:imageName]; 

+imageNamed:都有自己的緩存,所以這非常有效。或者,您可以使用一組包含10個圖像的數組,您可以儘早加載並使用objectAtIndex:來獲得正確的圖像。我只是通常用+ imageNamed來做:

滑入新圖像沒有問題,但不應使用UIImageView。您應該使用兩個CALayers進行自定義視圖,您可以使用當前視圖和下一個圖像加載,並使用簡單的動畫從一個滑動到另一個。從Core Animation Programming Guide開始,網絡上也有幾個教程。這是學習Core Animation的一個很棒的小項目。

+0

非常感謝您的輸入搶劫。 – 2011-05-27 14:05:58

1
  1. 高效?我認爲你的方法是健全的。每1000毫秒對3個相對較小的圖像進行動畫處理對處理器來說不是很多工作。但是高效/績效問題總是必須經驗性地回答(imo)。
  2. 最好? - 如果它工作,執行,不會崩潰等等,你還需要什麼? 我能想到的唯一的另一種方法是提供背景圖像,並且仍然使用動態UILabel作爲數字。

在這一點上,我會說去吧,看看你得到什麼。
祝你好運。

+0

我希望我可以標記問題的多個答案是正確的。 – 2011-05-27 14:05:42

+0

@Mick Walker - 好吧,羅布的回答比我的好,所以我對我的滿意度很滿意。祝你好運! – Rayfleck 2011-05-27 14:14:26