2012-03-01 71 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. 您在啓動動畫後阻止主線程。