我正试图找到一种方法来检测视图是否正在动画化。
例证:我在视图层上应用了阴影,为性能指定了shadowPath。调整视图大小时,阴影应该生成动画。我可以观察视图的框架,并相应地更改图层的shadowPath。但是当视图调整大小时,阴影会向前跳跃,因为更改没有动画。
我知道如何使用CABasicAnimation为shadowPath设置动画,但我需要知道正在进行的动画的属性,以便我也可以将它们应用到我的动画中(主要是:持续时间,缓动)。
这是一个框架类型的组件,所以我不能假设我事先知道持续时间和缓动属性。
观察帧时有没有办法检测开始/运行的动画?
答案 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];