ios - 在 tableView 中动态更改单元格约束
问题描述
我正在尝试根据 TableView 中的滚动进度更新单元格上的一些约束。目标是重现这种效果:https ://youtu.be/VMyNHq3CO04?t= 416(6:56)
我目前的所有牢房都有空格和圆角。现在,我得到了我的 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
位置来按比例更新我的约束。
但我对这段代码有一些主要问题:
- 在性能方面,由于滚动视图,该函数经常被调用(即使调用
updateCellState
仅通过 30,40,...偏移点) - 我的单元格并不总是更新,它们需要出列才能重新加载并使用新参数显示我的单元格(
reloadData()
tableView 的一个工作,但不适合流畅的流程)
你知道我如何复制我上面提到的效果吗?
解决方案
推荐阅读
- c# - 如何连接到 Visual Studio 中的访问数据库
- python - 用于历史性每日幻想结果的 Web Scrape Fantasy Cruncher
- python - 将水平元组制作成 numpy 数组列的最佳方法
- javascript - 如何在 webpack 的“开发”模式下获取可读的 javascript 文件?
- c# - 在我的 mac mini m1 中进行无限循环?
- fortran - 为什么我的参数(包括矩阵)在 Fortran 子程序中不断变化?
- javascript - 将 Outlook .msg 文件上传到 S3
- python - 在列表中的空白处将值插入到 html 表中
- javascript - 为什么状态变量的值没有被更新?
- html - 如何将我的传单地图从 R 输出到 Sharepoint 站点