-3

我很少有子视图响应相同的动画。我想在动画完成后删除子视图(animationDidStop)。是一种检测 animationDidStop 中动画子视图的方法吗?

在这种特殊情况下:

 if ([animationID isEqualToString:@"myAnimation"])
    view.removeSubView:myView;

如果是正确的子视图,你怎么看?,因为我之前说过一些子视图响应相同的动画。

4

1 回答 1

3

您可以为动画命名(每个视图都需要一个唯一的动画名称):

[UIView beginAnimations:@"myAnimation" context:nil];
myView.alpha = 1.0f;     // or whatever property you're animating...
[UIView commitAnimations];

然后在

- (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(id)context
{
    if ([finished boolValue])
    {
        if ([animationID isEqualToString:@"myAnimation"])
            [myView removeFromSuperview];
    }
}

或者更好的是,使用 iOS4+ 块动画方法及其完成处理程序,您将能够在完成处理程序中更清晰地引用正在动画的视图。例如

[UIView animateWithDuration:0.4f animations:^
{ 
    myView.alpha=1.0f; 
} 
completion:^(BOOL finished)
{
    [myView removeFromSuperview];
}];
于 2012-09-06T20:57:20.380 回答