Динамическое изменение ограничения ячейки в tableView - PullRequest
0 голосов
/ 07 марта 2019

Я пытаюсь обновить некоторые ограничения для ячейки в зависимости от хода прокрутки внутри моего TableView.Цель состоит в том, чтобы воссоздать этот эффект: https://youtu.be/VMyNHq3CO04?t=416 (в 6:56)

В настоящее время у меня есть все ячейки с пробелами и закругленным углом.Сейчас я получаю позицию смещения scrollView моего tableView и запускаю следующую функцию:

 func updateCellState(position: CGFloat) {
    let numberOfItems = tableView.numberOfRows(inSection: 0)
    for i in 0..<numberOfItems {
        guard let cell = tableView(tableView, cellForRowAt: IndexPath(row: i, section: 0)) as? FMReceiptReviewCellWithContextualActions else {
            break
        }
        tableView.beginUpdates()
        self.stretch = position / 1000 > 1 ? 1 : position / 1000
        cell.delegate?.updateCellState(position: position)
        cell.setNeedsLayout()
        cell.layoutIfNeeded()
        tableView.endUpdates()
    }
}

updateCellState принимает позицию scrollView для пропорционального обновления моего ограничения.

Но у меня есть несколько серьезных проблем с этим кодом:

  • С точки зрения производительности функция часто вызывается из-за scrollView (даже при вызове updateCellStateтолько на 30,40, ... точка смещения)
  • Мои ячейки не всегда обновляются, и их необходимо удалить из очереди для перезагрузки и отображения моих ячеек с новыми параметрами (reloadData() работы tableView,но не подходит для плавного потока)

У вас есть идеи, как я мог бы воспроизвести эффект, который я упомянул выше.

...