ios如何在动画结束后删除子视图(animationDidStop)

时间:2012-09-06 20:50:36

标签: iphone ios core-animation uiviewanimationtransition

我几乎没有回应相同动画的子视图。我希望在动画完成后删除子视图(animationDidStop)。是一种检测在animationDidStop中动画的子视图的方法吗?

在这种特殊情况下:

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

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

1 个答案:

答案 0 :(得分: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];
}];