2012-01-14 72 views
6

我试图找到一种方法来检测视图是否正在动画。有没有办法在iOS中检测正在运行的动画?

案例:我已视图的层上施加了阴影,指定为性能shadowPath。当视图被调整大小时,阴影应该随着动画。我可以观察视图的框架,并相应地更改图层的shadowPath。但是当视图正在调整大小时,由于变化没有动画,因此影子会跳跃前进。

我知道如何使用CABasicAnimation动画shadowPath,但我需要知道正在进行的动画的属性,以便我可以将它们应用于我的动画(主要是:duration,easing)。

这是一个框架型元件,所以我不能假设我知道事先的持续时间和宽松的属性。

有没有一种方法来检测启动/观察帧时,正在运行的动画?

回答

12

你可以通过调用

[yourView.layer animationForKey:@"key"] 

让所有的键检索连接到特定视图的层中的所有动画知道它的关键有一些动画,来电

NSArray* keys = [yourView.layer animationKeys]; 
+0

啊很大。谢谢! – Inferis 2012-01-17 10:38:06

0

我认为最好的做法应该是....

UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.7]; 
[UIView setAnimationBeginsFromCurrentState:YES]; 

.....your code 
// Set animation did stop selector before committing the animations 

[UIView setAnimationDidStopSelector:@selector(animationFinished:)]; 

[UIView commitAnimations]; 
相关问题