Как правильно анимировать TableViewCell после анимации TableView? - PullRequest
0 голосов
/ 29 января 2020

Я пытаюсь сделать анимацию TableView (развернуть ячейку) с последующим изменением внешнего вида ячейки (добавить тень).

Это будет выглядеть примерно так

enter image description here

однако я обнаружил, что если я установлю тень в том же прогоне l oop, что и анимация расширения, тень получит переопределение:

tableView.beginUpdates()
cell.footerContainer.isHidden = false
tableView.endUpdates()
cell.highlightMode = true   //computed property to add top+bottom shadow

Но если я добавлю задержка (предположительно при последующем запуске l oop), тогда все работает:

tableView.beginUpdates()
cell.footerContainer.isHidden = false
tableView.endUpdates()
DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) {
        cell.highlightMode = true   //computed property to add top+bottom shadow
}

Но это не надежно, потому что 0,3 на одном устройстве будет работать, может не работать на более медленном устройстве. Поэтому я попробовал это:

CATransaction.begin()
CATransaction.setCompletionBlock {
  cell.highlightMode = true   //computed property to add top+bottom shadow
}
tableView.beginUpdates()
cell.footerContainer.isHidden = false
tableView.endUpdates()
CATransaction.commit()

И это тоже не сработало.

Как лучше это сделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...