Cocoa Touch中的动画?

Ric*_*kiG 2 animation cocoa-touch

我过去一直在使用UIViewAnimation进行简单的动画,现在我可以看到Apple不鼓励在+4.0中使用这个类.我开始研究CATransitions和-animation.它提供了一些更细粒度的控制,但在我有限的使用中看起来真的很臃肿.当我试图抓住平台上的各种可能性时,我遇到了一个兔子洞,里面有很多关于Core Animation,Quartz和OPEN GLS的东西,但是动画上没有简单的东西让我开始.

我需要"补间"位置,alpha,缩放和旋转,有时一次只能在几个UIViews上,并且有一个用于animationDidStart和didStop的委托钩子. 那里有什么好的Tween引擎吗? 处理过flash和Java这真的是我想念的事情之一.

如果我使用CATransitions,似乎我一次只能动画一个属性,即alpha,如果我必须同时移动和旋转UIView,我将不得不为每个属性设置单独的动画. 如果我应该使用CATransition,有没有办法构建一个动画对象,一次动画几个属性?

如果有人能让我开始以动画的复杂性与所需代码量成正比的方式开始,我将非常感激:)提前感谢.

lew*_*uez 5

你是在思考这个问题.

虽然Apple确实不鼓励iOS 4中的beginAnimations:context:方法,但它们提供了一种非常好的新方法,比以前更容易实现.它仍然是UIView类的一部分,它只是使用了update:blocks提供的一个很棒的新功能.

事实上,Apple甚至鼓励使用基于块的动画.取自UIView类引用:

"在iOS 4.0及更高版本中不鼓励使用此方法.您应该使用基于块的动画方法."

基于块的动画非常简单易用.它们采用以下形式:

[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];
   }
];
Run Code Online (Sandbox Code Playgroud)

看起来熟悉?它与beginAnimations:context:方法非常相似.小^ {}部分是块.块保持状态,因此它们可以很好地处理这种事情.有关块的更多信息,请查看

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

确保您查看此处的UIView类引用.有许多新的基于块的动画方法.

此外,值得注意的是,块只是iOS 4.因此,提供了SDK 3或更低版本设备的备份代码.或者,继续使用beginAnimations:context:现在,但请注意它的日期已编号.