2010-09-11 37 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