UITableView 正在删除 iOS 11 中的行

UITableView Deleting rows in iOS 11

当我尝试删除行时,起初它表现得很好。但是,在 content size 首先小于 table 视图的 border 的情况下,当删除行时,整个 table 突然向上跳 1 行...

这是我的删除行操作,

override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
    if editingStyle == .delete {
        Results.remove(at: indexPath.row)
        tableView.deleteRows(at: [indexPath], with: .automatic)
    }
}

ViewDidload中我已经实现了下面的代码

self.tableView.estimatedRowHeight = 0;
self.tableView.estimatedSectionHeaderHeight = 0;
self.tableView.estimatedSectionFooterHeight = 0;

仅当内容的高度首先变小到边框时动画才会出错...之后动画也 运行 正确...

这里的 GIF 展示了正在发生的事情...... 这是 iOS 11 中的错误吗?

好的,我终于找到了解决方案,看起来不错。我将下面的代码添加到删除操作中:

if(tableView.contentSize.height<=tableView.bounds.height+100.0 && tableView.contentSize.height>tableView.bounds.height) {
    tableView.scrollToRow(at: IndexPath(row: 0, section: 0), at: .top, animated: true)
}
// The 100.0f is the cell height.

100.0f 是单元格的高度。所以当content的高度首先小于tableView的border时,tableview会滚动到最顶部,而glitch动画会被滚动动画覆盖。