2012-09-13 30 views
0

如何讓我的細胞imageView屬性一個接一個地飛翔?使細胞imageView飛進動畫

我現在可以讓他們飛,但只能一次全部。

而且是很好的性能,做這樣的事情?

謝謝!

回答

4

使用indexPath.row來計算延遲。

float animationDelay = 0.2f; 
[UIView animateWithDuration:0.3f 
         delay:animationDelay * indexPath.row 
        options:0 
       animations:^{ 
      cell.imageView.transform = CGAffineTransformMakeScale(1.0f, 1.0f); 
     } completion:^{}]; 

這會延遲每行0.2秒相對於它上面的行。當然,這隻會在你最初加載表格時才起作用,但我想這就是你想要動畫的東西?當你開始滾動並加載新的單元格時,你可能應該將延遲設置爲零。否則圖像將需要一段時間才能顯示出來。

爲了實現這一點,我建議引入BOOL的ivar稱爲loadingTheFirstTime它被設置爲YES最初(在initawakeFromNib方法)。然後,您可以在第一次顯示錶格時將其設置爲NO。在創建單元格時,應該首先檢查這個變量,看看是否需要添加延遲。

+0

該死!我被燒了...... :) – rdurand

+0

史詩人,謝謝! :) – Devfly

0

也許成立,那裏是一個for循環的方法,通過每一個細胞運行,並貫穿於每一次循環中的動畫?關於表現,我不知道。我不會想象這對性能會有好處,特別是如果有很多單元格,但是您可以隨時嘗試並找出結果! :)

2

我這裏假設你是在cellForRowAtIndexPath:。用以下動畫改變你的動畫:

[UIView animateWithDuration: 3.0 
         delay: indexPath.row 
        options: UIViewAnimationCurveLinear 
       animations: ^{ 
        cell.imageView.transform = CGAffineTransformMakeScale(1.0f, 1.0f); 
       } 
       completion:^(BOOL finished) { 

       }]; 

動畫將以1秒的間隔加載。如果您不在此功能中,請在創建標籤時爲其設置一個標籤,並將該標籤置於延遲中。