有没有办法在iOS中检测正在运行的动画?

时间:2012-01-14 23:23:37

标签: ios animation core-animation

我正试图找到一种方法来检测视图是否正在动画化。

例证:我在视图层上应用了阴影,为性能指定了shadowPath。调整视图大小时,阴影应该生成动画。我可以观察视图的框架,并相应地更改图层的shadowPath。但是当视图调整大小时,阴影会向前跳跃,因为更改没有动画。

我知道如何使用CABasicAnimation为shadowPath设置动画,但我需要知道正在进行的动画的属性,以便我也可以将它们应用到我的动画中(主要是:持续时间,缓动)。

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

观察帧时有没有办法检测开始/运行的动画?

2 个答案:

答案 0 :(得分:12)

您可以通过调用

来检索附加到特定视图层的所有动画,知道它的关键
[yourView.layer animationForKey:@"key"]

获取所有键,有一些动画,调用

NSArray* keys = [yourView.layer animationKeys];

答案 1 :(得分: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];