Как анимировать tableViewCell только один раз?

Я работаю над табличным представлением, которое я хочу, чтобы его ячейки анимировались при загрузке. Я устанавливаю альфа-затухание от 0 до 1 в течение 1,5 секунд. Проблема, с которой я сталкиваюсь, состоит в том, что это анимируется каждый раз, когда вызывается cellForRowAt indexPath. Есть ли хороший способ сделать это, чтобы ячейка анимировалась только один раз, а не каждый раз, когда вызывается cellForRowAt IndexPath? Любая помощь приветствуется. Спасибо!

// 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 ответ

Решение

Нечто подобное может помочь.

Создать глобальную переменную

var isFirstLoad = true

затем в вашем методе configCell оберните анимацию внутри if-block а также установить флаг в false

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
            })
        }
    }
}
Другие вопросы по тегам