在tableView中动态更改单元格约束

时间:2019-03-07 13:42:25

标签: ios swift uitableview tableview cell

我正在尝试根据TableView内部的滚动进度更新单元格上的一些约束。目标是重新创建这种效果:https://youtu.be/VMyNHq3CO04?t=416(在6:56)

我目前所有单元格都带有空格和圆角。现在,我获得tableView的scrollView的偏移量的位置,并运行以下功能:

 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而被调用(即使仅以30,40,...偏移点调用updateCellState
  • 我的单元格并不总是更新,需要重新排队以重新加载并用新参数显示我的单元格(tableView工作的reloadData(),但不适合平滑流动)

您是否知道我该如何复制上面提到的效果?

0 个答案:

没有答案