Анимации, добавленные в ячейку таблицы, не работают

#uitableview #swift5 #caanimation

Вопрос:

У меня проблема с анимацией пользовательской ячейки таблицы после прокрутки. Мне нужно перейти к определенному индексу с анимацией прокрутки, а затем выделить ячейку, изменив фон ячейки.

Для прокрутки я использую

 self.tableView.scrollToRow(at: index_path, at: position, animated: true)
 

В обратном вызове willDisplayCell я добавляю анимацию в ячейку, к которой я прокручиваю, с помощью CAAnimation, как это.

     let animation = CABasicAnimation(keyPath: "backgroundColor")
    animation.fromValue = UIColor.white.cgColor
    animation.toValue = UIColor.blue.withAlphaComponent(0.4).cgColor
    animation.duration = 1
    animation.autoreverses = true
    animation.isRemovedOnCompletion = true
    cell.contentView.layer.add(animation, forKey: "any key")
 

Анимация изменения цвета фона ячейки не работает. Я думаю, что анимация прокрутки ячейки таблицы переопределяет добавленную анимацию. Есть ли какой-либо обходной путь для этого.(Примечание: мне тоже нужна анимация прокрутки)

Комментарии:

1. попробуй UIView.animate вместо CABasicAnimation этого ..

2. @NayanDave .Хорошо. Я попробую это сделать и вернусь к вам.

3. @NayanDave, нет, это не помогло

4. Попробуй DispatchQueue.main.async{ TableView_Scroll_Code }

5. попробуйте добавить анимацию в метод prepareForReuse UITableView. Метод используется для @Documentation «сброс атрибутов ячейки, которые не связаны с содержимым, например, альфа, редактирование и состояние выбора».

Ответ №1:

«Любой ключ» не является допустимым ключом. Попробуйте вместо этого использовать kCATransition в качестве ключа.

Комментарии:

1. Привет, спасибо, что ответили. Я пытался, но это не сработало. Я не думаю, что этот ключ имеет какое-либо отношение к анимации. Если я не ошибаюсь, это просто для уникальной идентификации добавленной анимации.