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

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

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

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

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

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


通过调用,您可以检索附加到特定视图图层的所有动画,并知道它是关键

[yourView.layer animationForKey:@"key"]

为了获得所有的钥匙,还有一些动画可供调用

NSArray* keys = [yourView.layer animationKeys];

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

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];
链接地址: http://www.djcxy.com/p/74181.html

上一篇: Is there a way to detect a running animation in iOS?

下一篇: CALayer/CABasicAnimation opacity animation cache?