2010-08-13 115 views
3

在我的iOS冒險,I got really into blocks,因爲它們是UIViewAnimation「Animate With Blocks」,這是推薦的方式來做UIView動畫所必需的。當然,這會導致不向後兼容的代碼。我意識到這個問題有一個主觀的組成部分,但在什麼時候使用iOS 4.0代碼只是一個好主意?或者差分代碼是一個好主意,在objective-c中如何實現呢?iPhone 4.0操作系統,塊

我現在面臨重做我的iOS 3.0代碼,這是一個痛苦的任務:我應該只是保留我的「塊」代碼,直到世界前進?

回答

5

請參閱Plausible Blocks將塊運行時間的端口設置爲10.5/iPhone OS 3.雖然您必須在3.0上實現並將相關的動畫方法添加到UIView的元類,但這可能比重寫代碼更容易(提示: class_addMethod())。

根據採用情況(特別是考慮到iPad仍然停留在3.2.1),我認爲我們不會再放棄OS 6支持6至9個月。

使用基於塊的動畫API複製setAnimationWillStartSelector:也沒有簡單的方法。我用它來將聲音同步到動畫中(你不能只是播放聲音,因爲直到視圖佈局/圖像加載完成後動畫纔會啓動)。

+0

偉大的答案,你打了一些點,我根本不知道,就像缺乏'setAnimationWillStartSelector' ...我真的沒有得到塊的癡迷。一方面他們非常可愛,但另一方面,他們幾乎堅持難以閱讀的內聯代碼。顯然,你可以調用方法... – 2010-08-13 18:53:22

+0

另一個問題是:棄用的方法會持續多久(從歷史上類似的情況來判斷)? – 2010-08-13 22:14:29

+0

「普通」動畫實際上還沒有被棄用,我至少在iOS 5之前(即它們可能從SDK中刪除OS 3支持)放棄之前,它會被刪除。如果你使用無警告的版本,那麼你的代碼中會有很多#ifs(因爲模擬器建立的是min OS = base SDK),所以當你刪除相關的庫時,它應該會自動停止使用已棄用的函數無論如何, – 2010-08-15 22:17:03