2013-02-15 45 views
2

出於某種原因,如果我只是使用的代碼:AnimateWithDuration是否正常奇怪

[UIView animateWithDuration:.5 delay:0 
          options:UIViewAnimationOptionCurveEaseInOut 
         animations:^{ 

          CGRect newDescriptFrame = [self.summaryTextField frame]; 
          newDescriptFrame.size.height = (bkgndRect.size.height - kbSize.height) - ((newDescriptFrame.origin.y) + 10); 
          self.descriptionTextView.frame = newDescriptFrame; 

         } 
         completion:^(BOOL finished){ 

         }]; 

它移動descriptionTextView就好了,但如果我與此相伴再添動畫塊。

[UIView animateWithDuration:.3 delay:.5 
         options:UIViewAnimationOptionCurveEaseInOut 
        animations:^{ 

         self.summaryLabel.alpha = 0.0; 
         self.summaryLabel.alpha = 1.0; 

        } 
        completion:^(BOOL finished){}]; 

descriptionTextView的回覆到其原始位置的動畫之前,當第二塊動畫。爲什麼會發生?我如何解決它?如果我在框架更改的同一個塊中移動alpha更改。它根本不會動畫化框架更改。

+0

這可能是佈局約束問題。你在使用故事板還是xib?如果是這樣,請嘗試關閉自動佈局(左側的第一個選項卡,文件檢查器),並查看是否修復了它。 – rdelmar 2013-02-15 20:59:57

+0

@rdelmar我必須使用AutoLayout,因爲我在所有其他視圖中使用它。另一個奇怪的事情發生,如果我把幀改變出動畫塊,它仍然不會改變,如果我有alpha動畫塊。如果我將alpha動畫塊註釋掉,框架會發生變化.... – Alan 2013-02-15 21:24:41

+0

有時您會發現它是最初發生變化的位置,但是當其他視圖佈局通過時,事物會恢復到原來的位置。如果你使用佈局約束,那麼你不應該設置框架。您應該爲您想要更改的任何約束制定出路,並改爲爲約束設置動畫。 – rdelmar 2013-02-15 21:40:21

回答

0

是不是因爲只有一個動畫可以在同一時刻執行?也就是說,如果將兩個動畫放在一個代碼塊中,則只有最後一個將被實際執行。