2012-11-28 149 views
0

我開始使用UIView動畫。並且不能讓這樣的代碼正常工作。這裏是我有什麼UIView動畫隱藏並顯示

if(_Language.hidden == true) 
{ 
    [UIView animateWithDuration:1.0 
          delay:0.0 
         options:UIViewAnimationCurveEaseInOut 
        animations:^ { 
         _Language.alpha = 1.0; 
        } 
        completion:^(BOOL finished) { 
         _Language.hidden = false; 
        }]; 
} 
else 
{ 
    [UIView animateWithDuration:1.0 
          delay:0.0 
         options:UIViewAnimationCurveEaseInOut 
        animations:^ { 
         _Language.alpha = 0.0; 
        } 
        completion:^(BOOL finished) { 
         _Language.hidden = true; 
        }]; 
} 

此代碼工作在這種方式。按預期隱藏動畫。但是,顯示動畫僅等待1秒,並且在沒有任何轉換的情況下彈出對象。誰能告訴我我在這裏失蹤了什麼?

回答

9

您正在改變hidden屬性設置爲true後,才動畫結束了,所以也沒有出現,直到動畫完成。你應該在動畫開始前做:

if(_Language.hidden == true) 
{ 
_Language.hidden = false; 
[UIView animateWithDuration:1.0 
         delay:0.0 
        options:UIViewAnimationCurveEaseInOut 
       animations:^ { 
        _Language.alpha = 1.0; 
       }]; 
} 
+0

傻我..這沒有工作。但是現在又出現了另一個問題。我需要在視圖中加入_language.hidden = true。首先將其隱藏起來。我沒有正確地獲得第一個動畫,它會立即顯示。之後,一切都按預期工作。想法? – Datenshi

+0

通過將viewdidload中的alpha設置爲0來實現它。謝謝您的回答! – Datenshi

+0

http://stackoverflow.com/a/29080894/1442541 – evya

5

您的_Language.hidden設置爲true,因此當它是動畫時,屏幕上不會顯示任何內容。您需要在動畫之前將其顯示出來。將隱藏屬性設置爲false,然後顯示動畫。只有在完成塊中添加它時,反向纔會起作用。

_Language.hidden = false; 
[UIView animateWithDuration:1.0 ... 

和竣工塊將其刪除,

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

謝謝你的回答,但我會接受@shannoga的回答。因爲他在3秒內速度更快:) – Datenshi

+1

事實上,我快了10秒。 :)你可以通過點擊按最舊的標籤進行排序來驗證(接受後不會顯示)。反正這很好。很高興它有幫助。 – iDev