Cocoa touch Cocoa Touch中的动画?

Cocoa touch Cocoa Touch中的动画?,cocoa-touch,animation,Cocoa Touch,Animation,我过去一直在使用UIViewAnimation制作简单的动画,现在我可以看到Apple不鼓励在+4.0中使用这个类。我开始研究翻译和动画。它提供了一些更细粒度的控制,但对于我有限的使用来说,它似乎真的太臃肿了。 当我试图抓住平台上的可能性时,我遇到了一个兔子洞,里面有很多关于核心动画、Quartz和OpenGLS的内容,但没有简单的动画内容,让我开始 我需要在位置、alpha、缩放和旋转之间“切换”,有时在几个UIView上同时切换,并为animationDidStart和didStop设置代理

我过去一直在使用UIViewAnimation制作简单的动画,现在我可以看到Apple不鼓励在+4.0中使用这个类。我开始研究翻译和动画。它提供了一些更细粒度的控制,但对于我有限的使用来说,它似乎真的太臃肿了。 当我试图抓住平台上的可能性时,我遇到了一个兔子洞,里面有很多关于核心动画、Quartz和OpenGLS的内容,但没有简单的动画内容,让我开始

我需要在位置、alpha、缩放和旋转之间“切换”,有时在几个UIView上同时切换,并为animationDidStart和didStop设置代理挂钩。 有什么好的Tween引擎吗? 在处理过flash和Java之后,这真的是我错过的事情之一

如果我使用CATTransitions,似乎一次只能为一个属性设置动画,即alpha,如果我随后必须同时移动和旋转UIView,我将必须为每个属性设置单独的动画。 如果使用CATTransition,是否有一种方法可以创建一个动画对象,同时为多个属性设置动画?


如果有人能让我开始了解动画的复杂性与所需代码量成正比的方法,我将不胜感激:)提前感谢。

您可以在
[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];

你想得太多了

虽然苹果确实不鼓励iOS 4中的beginAnimations:context:methods,但它们提供了一种奇妙的新方法来实现这一点,比以前更容易。它仍然是UIView类的一部分,只是使用了更新提供的一个很好的新特性:块

事实上,苹果甚至鼓励使用基于块的动画。取自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];
   }
];
看起来眼熟吗?它非常类似于beginAnimations:context:method。小的^{}部分是块。块保持状态,所以它们在这种情况下工作得很好。有关块的更多信息,请查看

确保查看位于的UIView类引用。有许多新的基于块的动画方法


另外,值得注意的是,block仅适用于iOS 4。因此,提供了SDK 3或更低版本设备的备份代码。或者,现在继续使用beginAnimations:context:但要知道它的日子已经不多了。

你好,布鲁泰拉,谢谢。正如我提到的,苹果从4.0开始就不鼓励这种方法。这就是我一直在做的事情,我喜欢这种方法的一点是它很简单,可以做多个属性,并且“可读”。我不知道如何使用动画、卡巴斯基动画或CATTransitions来获得类似的东西。嗨,lewiguez,谢谢,我喜欢别人告诉我我想得太多了:)看来苹果不仅仅是在简单的动画上加了甜点,实际上还让它变得更简单了。我在您链接到的UIView参考中找到了“使用块设置视图动画”(我一直在查看旧参考并阅读旧动画指南)。所以我想再看一段时间UIViewAnimation,从块开始,但要有3.x的备份代码,最后,当iPad和慢速更新程序都是最新的时候,去所有块。很好,我可以用它来前进。再次感谢。