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

有没有办法在iOS中检测正在运行的动画?,ios,animation,core-animation,Ios,Animation,Core Animation,我试图找到一种方法来检测视图是否正在设置动画 举个例子:我在视图的图层上应用了阴影,为性能指定了阴影路径。调整视图大小时,阴影应沿视图设置动画。我可以观察视图的框架,并相应地更改层的阴影路径。但是,当视图调整大小时,阴影会向前跳,因为更改未设置动画 我知道如何使用CABasicAnimation设置阴影路径的动画,但我需要知道正在进行的动画的属性,以便我也可以将它们应用到我的动画中(主要是:持续时间、缓和) 这是在一个框架类型的组件中,所以我不能假设我事先知道了该组件的持续时间和缓解属性 观察帧

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

举个例子:我在视图的图层上应用了阴影,为性能指定了阴影路径。调整视图大小时,阴影应沿视图设置动画。我可以观察视图的框架,并相应地更改层的阴影路径。但是,当视图调整大小时,阴影会向前跳,因为更改未设置动画

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

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


观察帧时是否有方法检测开始/运行的动画?

您可以通过调用

[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];