2010-09-11 34 views
2

我一直在使用UIViewAnimation進行簡單的動畫過去,現在我可以看到蘋果不鼓勵在+4.0中使用這個類。我開始研究CATransitions和動畫。它提供了一些更精細的控制,但對於我的有限使用看起來真的很臃腫。 當我試圖抓住平臺上的可能性時,我遇到了一個在Core Animation,Quartz和OPEN GLS上有很多東西的兔子洞,但沒有簡單的動畫,讓我開始。Cocoa Touch中的動畫?

我需要「補間」位置,阿爾法,縮放和旋轉,有時一次在一些UIViews上,並有一個animationDidStart和didStop的代理鉤子。 那裏有很好的吐溫引擎嗎? 處理Flash和Java它真的是我想念的一件事。

如果我使用CATransitions,似乎我一次只能動畫一個屬性,即alpha,如果我必須同時移動和旋轉UIView,我將不得不爲每個屬性設置單獨的動畫。 如果我應該使用CATransition,是否有一種方法可以構建一個動畫對象,以同時動畫多個屬性?

如果有人能讓我開始動畫的複雜度與需要的代碼量成正比的方式,我將非常感謝:)提前致謝。

回答

5

你這個得太多。

儘管蘋果不鼓勵iOS 4中的beginAnimations:context:方法,但他們提供了一種WONDERFUL新的方法,比以前更容易實現。它仍然是UIView類的一部分,它只是使用update:blocks提供的一個很棒的新功能。

事實上,蘋果甚至鼓勵使用基於塊的動畫代替。

「這種方法的使用是不鼓勵在 的iOS 4.0和更高版本,您應該使用 基於塊的動畫方法 代替」:從UIView類參考取

基於塊的動畫非常易於使用。他們採取以下形式:

[UIView animateWithDuration:5 
    animations:^{ 
     self.yourView.frame = CGRectMake(100, 100, 100, 200); 
     self.yourView.alpha = 0.3; 
    } 
    completion:^(BOOL finished){ 
     self.yourView.alpha = 1.0; 
     [self.yourProperty doSomethingReallyCool]; 
    } 
]; 

看起來很熟悉嗎?它與beginAnimations:context:方法非常相似。小^ {}部分是塊。塊保持狀態,所以它們對於這種事情工作得非常好。有關塊的更多信息,請查看

http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/Blocks/Articles/00_Introduction.html

確保您查看位於here的UIView類參考。有一些新的基於塊的動畫方法。

另外,值得注意的是block只是iOS 4。所以,爲SDK 3或更低版本的設備提供了備份代碼。或者,只是繼續使用beginAnimations:context:現在,但要知道它的日子有數。

+0

嗨lewiguez和謝謝,我喜歡被告知我正在推銷東西:)看起來蘋果並不只是甜點的簡單動畫的東西,但實際上使它更簡單。我在鏈接到的UIView引用中找到了「帶塊的動畫視圖」(我一直在查看舊引用並閱讀舊動畫指南)。所以我猜想UIViewAnimation有一段時間了,從塊開始,但有3.x的備份代碼,最後,當iPad和緩慢的更新程序是最新的,去所有的塊。偉大的這個我可以用來前進。再次感謝。 – RickiG 2010-09-15 09:11:02

0

您可以設置應在[UIView beginAnimations:nil context:nil];方法內動畫一樣的屬性:

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:1.0f]; 

view.alpha = 0.0f; 
view.center = CGPointMake(34.0f,23.0f); 
... 

[UIView commitAnimations]; 
+0

嗨brutella和謝謝。正如我提到的,蘋果公司從4.0開始不鼓勵這種方法。這是我一直在做的事情,我喜歡這種方法的事情是,它很簡單,可以做多個屬性,並且是「可讀」的。我無法想象如何使用CAAnimation,CABasicAnimation或CATransitions獲得類似的東西。 – RickiG 2010-09-14 16:43:03