Как анимировать 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
})
}
}
}