2016-09-20 6 views
1

シンプルなアニメーション(実際には2つありますが、例の簡略化のために1つだけ表示されます)が連続してフェードインし、したがって、アニメーション化されたセルが消えてからスクロールバックするような方法でテーブルビューをスクロールすると、それらのセルはもうアニメーション化されません。私は(UITableViewCellから継承)私のカスタムセルクラスのインスタンスメソッドであるメソッドと呼ばれるセットアップ()でこのアニメーションを開始アニメーションは、セルが消えると停止し、再び表示されても再開しません。

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

:ここ

アニメーションです。私が言ったように、同じように動作する別のアニメーションがあり、それはイメージビューを振るので、これはアニメーションのフェードする種類に関連していないことが肯定的です。

setup()メソッドをデキューした後にcellForRowAtIndexPathメソッドで呼び出します。

setup()メソッドをwillDisplayCellメソッドで実行しようとしましたが、結果は同じです(このメソッドではデキューしていません)。

また、ブレークポイントを試してアニメーションコードを実行しました。ちょうど、セルが再表示されたときにアニメーションが開始されません。ですから、問題は、セルが再び表示されたときにアニメーションを再始動/継続する方法です。

+1

このアニメーションを実行する前にアルファ値をリセットしてください。 'cellForRowAtIndexPath'でそれを行うことができます。私の推測では、一度セルを表示し、そのセルに戻ってスクロールすると、同じ値のままなので、アニメーションは発生しません。 – Ayazmon

+0

@Ayazmonそうだった。あなたが答えを出したら、私はそれを受け入れて喜んで受け入れるでしょう:) – Whirlwind

+0

喜んで助けました:)基本的にアニメーションのセルのライフサイクルを伝える答えを書きました。 – Ayazmon

答えて

1

問題は、表示後にUI要素のアルファ値をリセットしていないことです。 UITableViewは、dequeueReusableCellWithIdentifier機能が使用されている場合は復元しますが、セルを再作成しないためです。したがって、cellForRowAtIndexPathのアルファ値をリセットし、willDisplayCellのビューをアニメートすると、直面していた問題が解決されます。

関連する問題