执行“beginUpdates”“endUpdates”时 UITableView 页脚视图的动画问题

Posted

技术标签:

【中文标题】执行“beginUpdates”“endUpdates”时 UITableView 页脚视图的动画问题【英文标题】:animation issue with UITableView footer View when performing "beginUpdates" "endUpdates" 【发布时间】:2014-12-02 22:47:25 【问题描述】:

当我使用动画更改单元格高度时(使用 beginUpdates()、endUpdates()),我的部分页脚有一个非常奇怪的动画:它在 tableview 的底部移动。

这是我能写的最简单的代码

func tableView(tableView: UITableView, titleForFooterInSection section: Int) -> String? 
    return "footer"


func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat 
    return cellHeight


func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
    return 1


func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
    return tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as UITableViewCell


func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) 
    tableView.beginUpdates()
    cellHeight += 20;
    tableView.endUpdates()

如何避免这个动画问题?

【问题讨论】:

我想知道这段代码是如何工作的。 cellHeight += 20 是什么意思? 是停留在底部还是只是暂时的状态? 查看这篇文章***.com/questions/5740518/… 【参考方案1】:

我遇到了完全相同的问题(页脚移动到 tableview 的底部并停留在那里)。 看起来这是一个 ios8 的错误(在 iOS7 上不会发生)。

就我而言,一种解决方法是将页脚作为下一节标题返回...

【讨论】:

以上是关于执行“beginUpdates”“endUpdates”时 UITableView 页脚视图的动画问题的主要内容,如果未能解决你的问题,请参考以下文章

beginUpdates/endUpdates 后出现意外的表格单元格动画

何时在 CarPlay 中使用 beginUpdates() 和 endUpdates()

带有 beginUpdates() 的 UITableView 反弹

UITableView beginUpdates/endUpdates 回调

UITableView 意外反弹 beginUpdates()/endUpdates()/performBatchUpdates()

在 numberOfRowsInSection 中调用 TableView BeginUpdates