2011-02-13 99 views
1

我正在創建一個應用程序,其中在屏幕上有幾個按鈕,並且我想讓它們在整個屏幕中移動。用戶可以點擊那些按鈕和用戶點擊的按鈕從屏幕上移除。因此我必須停止移動該按鈕的定時器。如何在整個屏幕上移動幾個按鈕

但我主要關心的是如何使所有的泡沫移動,即如何管理它們中的每一個?

我已經使用了NSTimer。

NSTimer* timer = [NSTimer timerWithTimeInterval:1 target:self selector:@selector(moveTheButton) userInfo:nil repeats:YES]; [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];

但這可能是有幫助的情況下,如果我只有一個按鈕。如果有更多按鈕,則很難管理定時器。

此外,按鈕的數量是動態的。

請建議一些備用。

我已經經歷了幾個線程,但沒有得到預期的答案。

預先感謝幫助.....

回答

1

我會建議使用CAAnimations移動你的按鈕。這將允許您在不使用NSTimers的情況下平滑地設置動畫效果,也可以動態創建按鈕動畫。

創建CAAnimations,然後添加到視圖圖層。您可以使用CAAnimations動畫顯示視圖的旋轉,位置和大小。從視圖層添加和刪除動畫也很容易,非常適合動態內容,而不會讓多個NSTimers頭疼。

+1

@Brett:感謝您的回覆......任何鏈接或代碼示例我可以找到它。 – 2011-02-13 08:57:02

0

UIButton應該如何移動?你的意思是像Brownian motion這樣的隨機移動每個按鈕的東西? :d

嗯,這其實並不重要,我想,但我們認爲你有一個廣義函數,確定給定其當前位置每個按鈕的行爲,在這種情況下,你可以使用一個NSArray跟蹤所有按鈕位置的每個時間,並通過單個NSArray(然後循環其元素)作爲NSTimer的選擇器調用此函數。

如果你沒有一個單一的泛化函數,但每個按鈕都有它自己的,你可以爲每一種動作子類化UIButton,你必須小心併爲每個實現正確動作的類實現一個方法。然後,您可以在NSTimer中調用一個函數,該函數循環訪問按鈕的引用數組,並調用每個實例的已實現的運動方法(通過多態)

相關問題