2012-03-01 48 views
0

我有这样的代码,例如:从完成期间上海华删除删除它前面

[UIView animateWithDuration:0.3 
          delay:0 
         options:UIViewAnimationOptionCurveEaseOut 
        animations:^{ 
         [self animateMenuOut:menu]; 
        }completion:^(BOOL finished) { 
         [menu removeFromSuperview]; 
        }]; 

而是生动活泼的,但是,它只是从视线中消失。删除[menu removeFromSuperview];行使它工作得很好。

回答

0

很可能您的-animateMenuOut方法具有即燃即灭的特性......只要您的动画代码触发,它就会在后台线程中运行,并且代码执行继续(即将完成)。据我所知,这是一个避免UI阻塞的功能。

希望这有一些帮助。

乔希。

+0

完成块中的代码在动画完成后执行(或者被取消,在这种情况下完成的参数将为“否”)。 – titaniumdecoy 2012-03-02 00:02:25

+0

你确定吗?通常动画代码可以避免阻塞。 – DarkMalloc 2012-03-02 00:03:53

+0

那么我该如何解决这个问题呢? – Andrew 2012-03-02 00:06:29

0

这段代码没有问题。 一些想法:

  1. 问题里面animateMenuOut
  2. 坏重绘性能。低FPS &持续时间0.3秒=>你看不到动画。你试过增加持续时间吗?
  3. 您在启动动画后阻止主线程。