2017-06-07 12 views
0

私は、読み込んだときにそのセルをアニメーション化したいと思うテーブルビューに取り組んでいます。私はアルファフェードを1.5秒以上かけて0から1に設定しています。私が実行している問題は、cellForRowAt indexPathが呼び出されるたびにアニメーション化されるということです。 cellForRowAt IndexPathが呼び出されるたびに、セルが1回だけアニメーション化されるように、これを行う良い方法はありますか?どんな助けもありがとうございます。ありがとう!tableViewCellを1回だけアニメーション化する方法は?

// function to configure custom table view cell 
func configCell(place: Place) { 
    // hide image and label before image is loaded 
    headlineImage.alpha = 0 
    headlineLabel.alpha = 0 
    headlineLabel.text = place.name 
    // set image asynchronously 
    headlineImage.sd_setImage(with: URL(string: "ImageUrl"), placeholderImage: UIImage(named: "restaurant"), options: .continueInBackground) { (_, _, _, _) in 
      // image download complete fade in image 
      print("COMPLETED SD SET IMAGE") 
      UIView.animate(withDuration: 1.5, animations: { 
       self.headlineImage.alpha = 1 
       self.headlineLabel.alpha = 1 
      }) 
    } 

} 

答えて

1

このようなものが役立ちます。

私は考えていなかった方法がわからない、あなたのconfigCell方法で、グローバル変数

var isFirstLoad = true 

を作成if-block内のアニメーションをラップしても偽

func configCell(place: Place) { 
    headlineLabel.text = place.name  
    if isFirstLoad == true { 
     isFirstLoad = false 
     headlineImage.alpha = 0 
     headlineLabel.alpha = 0 
     headlineImage.sd_setImage(with: URL(string: "ImageUrl"), placeholderImage: UIImage(named: "restaurant"), options: .continueInBackground) { (_, _, _, _) in 
      print("COMPLETED SD SET IMAGE") 
      UIView.animate(withDuration: 1.5, animations: { 
       self.headlineImage.alpha = 1 
       self.headlineLabel.alpha = 1 
      }) 
     } 
    } 
} 
+0

にフラグを設定しますありがとう。私はPlaceクラスにbooleanメンバvarを追加しました。このクラスは、セルをアニメーション化するかどうかを定義し、あなたが述べたようにif内にアニメーションをラップします。 –

関連する問題