假设我制作了这样的动画:
[UIView animateWithDuration:0.5
delay:0.0
options:UIViewAnimationOptionCurveEaseInOut
animations:^{
someView.frame = CGRect(0, 100, 200, 200);
}
completion:nil];
假设我在someView中有子视图,它们的layoutSubviews方法被覆盖。我想在该layoutSubviews中识别一个正在进行的动画,并根据我检测到的动画是由我创建的,还是例如由设备旋转引起的动画来做出相应的操作。
为了获得正在进行的动画,我使用以下代码:
for (NSString *animationKey in [self.layer animationKeys])
{
CAAnimation *animation = [self.layer animationForKey:animationKey];
// ... Do something ...
}
现在,如果我要使用CABasicAnimation,我可以使用以下方法设置任意属性:
[myAnimation setValue:@"mySuperCoolAnimation" forKey:@"AnimationName"];
然后检查另一边的那个钥匙。但由于我的视图层次结构复杂,我想避免使用CABasicAnimation 。
所以为了简单起见,有没有办法使用UIView animateWithDuration 来做类似的事情: