2011-02-18 24 views
6

我討厭發佈這個,但我看到我正在處理的iPhone應用程序中不需要的動畫。我以前從未在我的應用程序或任何其他應用程序中看到過這個。在iPhone應用程序中發生的奇怪的不必要的動畫

此應用程序僅適用於iOS 4.2和iPhone。奇怪現象即使在iPhone4上也是如此。

實例:

  • 當所討論的應用啓動一個UIAlertView,它「從頂部或左上方蒼蠅」。

  • 當任何UITableView滾動時,新的(標準)單元格數據「在單元格左側擴展」,當第一次進入視圖並因此填充時。

  • UITextField輸入文本時,輸入速度很慢,您可以看到光標在新的字母上向右滑動。如果在UITextField中有一個「清除」按鈕,它會從左側滑到UITextField首先進入。

  • UIPickerView正在滾動時,滾動到新顯示的行將從左上角「飛行」新的行數據。

整體行爲就像舊的舊的Apple II +基本,你可以設置「速度= 20」和「慢」的計算機。

我所知道的: 這發生在多部手機(4和3G)上。它不會發生在我的其他應用程序中。一般而言,其他應用程序不會發生這種情況。它在整個應用程序中似乎是一致的。這不是一個小項目,所以我不確定它是什麼時候開始的,但它並沒有從這種行爲開始。沒有與上述項目相關的動畫。這個問題似乎影響了應用程序中的所有內容。

甚至有一個獨立的代碼庫應用程序的例子,當它集成到這個應用程序中時,顯示相同的問題。

有沒有人見過這樣的行爲?我不是唯一的開發者,那麼是否有可能設置其他人可以設置的原因呢?

回答

10

這聽起來像你要離開UIView動畫未完成。如果您開始動畫但從未完成動畫,那麼在該點之後的所有UIView操作都將進行動畫處理,就像您所描述的那樣。奇怪的部分是我認爲UIKit會爲你終止它們(並記錄一條消息),如果控制權傳遞迴帶有開放動畫塊的runloop。要麼不再發生,要麼你不斷開始新的動畫塊。

您應該查看+[UIView beginAnimations:context:]的所有實例的代碼,並確保它們全部由相應的+[UIView commitAnimations]進行平衡。

+0

這是問題!非常感謝!還有一段代碼沒有完成beginAnimations:context:沒有commitAnimations。這是一個低優先級的部分,所以目前它在項目中沒有得到很多關注。 – dredful 2011-02-18 18:02:51

相關問題