如何在动画块的时间间隔之后执行一行代码?

时间:2010-05-26 12:00:30

标签: iphone objective-c uiview

我在UIAnimation块中放了一行代码。下一行是在动画块之后。我希望第二行只在第一个动画块的时间间隔之后执行。

例如: -

[UIView beginAnimations:@"View Flip" context:nil];
[UIView setAnimationDuration:0.5];
//First line comes here
 [self.view addSubview:subView];
 [UIView commitAnimations];

然后第二行

[subView2 removeFromSuperView];

我希望第二行仅在动画动作的0.5秒间隔后执行。有可能这样做吗?

1 个答案:

答案 0 :(得分:2)

您可以设置动画的委托,并在其方法中删除子视图:

...
[UIView beginAnimations:@"View Flip" context:nil];
[UIView setAnimationDuration:0.5];

[UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];
[UIView setAnimationDelegate:self];

//First line comes here
[self.view addSubview:subView];
[UIView commitAnimations];
...

然后在委托的动画中,停止处理程序删除了你的第二个子视图:

- (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context{
    if ([finished boolValue])
        [subView2 removeFromSuperview];
}