2016-09-20 69 views
1

我有簡單的動畫(實際上是其中的兩個,但僅顯示一個用於簡單示例),它會不斷淡入並淡出標籤。所以,當我以一些動畫單元格消失的方式滾動tableview,然後向後滾動時,那些單元格就不再生動了。當單元格消失時動畫停止,再次出現時不會恢復

這裏是動畫:

UIView.animateKeyframesWithDuration(
       0.5, 
       delay: 0.0, 
       options: [.Repeat, .Autoreverse, .AllowUserInteraction], 
       animations: { 
        self.stateLabel.alpha = 0.5 
      }, completion: nil) 

我在方法中調用設置(),這是我的自定義單元格類(從UITableViewCell繼承)的實例方法來啓動這個動畫。正如我所說,還有另一種動畫行爲相同,它震動了圖像視圖,所以我肯定這與動畫的淡出類型無關。

我在去隊列之後調用setup()方法cellForRowAtIndexPath方法。

我試過的是在willDisplayCell方法中運行這個setup()方法,但結果是一樣的(當然我沒有在這個方法中將這個方法取出)。

此外我嘗試了斷點,並執行動畫代碼。只是,當細胞重新出現時,動畫不會開始。所以問題是,當細胞再次出現時如何重新啓動/繼續動畫?

+1

確保在運行此動畫之前重置Alpha值。你可以在'cellForRowAtIndexPath'中完成。我的猜測是一旦你顯示一個單元格並回滾到它,值保持不變,因此不會出現動畫。 – Ayazmon

+0

@Ayazmon就是這樣。如果你做出答案,我會非常樂意接受&upvote :) :) – Whirlwind

+0

很高興它幫助:)我寫了一個答案,基本上告訴動畫細胞的生命週期。 – Ayazmon

回答

1

嗯問題是沒有重置UI元素的alpha值後顯示它。因爲UITableView會恢復,但如果使用dequeueReusableCellWithIdentifier函數,則不會重新創建該單元。因此,重置cellForRowAtIndexPath上的阿爾法值並動畫willDisplayCell中的視圖可以解決您遇到的問題。

相關問題