2011-09-12 98 views
2

我使用UIView动画在我的应用程序:的UIView动画结束

 [UIView beginAnimations:nil context:NULL]; 
     [UIView setAnimationDuration:1]; 
     //do some animation 
     [UIView commitAnimations]; 

现在,有一种可能性,即动画将需要几秒钟才能完成。那么,有没有办法知道动画何时结束?

回答

2

我还没有使用这个,但有一个方法setAnimationDidStopSelector,它允许你定义一个动画完成时应该调用的选择器。

另请参阅Apple的文档UIView

还有上Ray Wenderlich's网站

+0

正如tipycalFlow所指出的,blocsk也可以工作,但只适用于运行4或更高版本的设备。 – Frank

+0

是的。也检查出这个SOF的问题:http://stackoverflow.com/questions/7008838/multistage-animation-using-blocks/7009149#7009149 – tipycalFlow

+1

好:),将不得不尝试在一段时间 – Frank

9

使用苹果提供的最新的基于块的动画方法的一个例子:在你使用的方法不久将被取消

[UIView animateWithDuration:0.5 
         delay:0.0 
        options:UIViewAnimationOptionBeginFromCurrentState 
       animations:^{ 
        //animation block 
       } 
       completion:^(BOOL finished){//this block starts only when 
       //the animation in the upper block ends 
       //so you know when exactly the animation ends 
    }]; 

...

+1

看来,完成块也是动画,任何方式我可以立即执行完成块吗? –

+0

不......不认为完成块应该需要时间。 Apple的文档 - “当动画序列结束时要执行的块对象。”如果您仍然发现问题,您可能会错过某些东西......将其作为问题发布。 – tipycalFlow