如何检查我的方法是从'[UIView animateWithDuration:...]'里面调用的?

时间:2014-05-30 10:15:41

标签: animation uiview calayer cgpath

我有一个设置UIView属性的方法。我在某些情况下从UIView animateWithDuration:块直接调用它。在这个方法中,我更改了视图层的路径,因此它对动画的操作不正确(路径必须明确地设置动画)。

如何确定从[UIView animateWithDuration:...]内部调用我的方法?

[UIView animateWithDuration:duration animations:^{ [myClass myMethod]; }];
...
- (void)myMethod
{
    if (__view_is_animating__) // how to check here?
    {...}
}

目前我在viewIsAnimationFlag之前设置自定义[UIView animateWithDuration:...]并在myMethod中查看,但这很粗鲁。

1 个答案:

答案 0 :(得分:0)

感谢DavidRönnqvist在objc.io

“只要图层要求操作(任何可动画属性的动画处理程序),视图就会返回NSNull,除非在动画块内发生属性更改”

NSLog(@"we are inside animation block: %@",
    [myView actionForLayer:myView.layer forKey:@"position"] ? @"YES" : @"NO");