如何在 UITableView swift 3 中使用动画在底部滚动

Posted

技术标签:

【中文标题】如何在 UITableView swift 3 中使用动画在底部滚动【英文标题】:How to scroll at the bottom with animated in UITableView swift 3 【发布时间】:2017-07-10 18:07:25 【问题描述】:

如何在 UItableView 重新加载时将页脚视图设置为表格视图?

我正在尝试将一个元素附加到 tableView 并且当 table view 重新加载页脚视图时应该带有一些动画。而且,如果表格视图内容超过屏幕大小,页脚视图应该贴在屏幕底部。这是我的尝试:

    tableView.beginUpdates()
    self.familyAModelArray.append(self.childAModelArray)
    tableView.endUpdates()

注意: 这里我想将一个对象附加到一个数组中,该数组是 UITableView 的内容并重新加载 TableView。提前致谢!

【问题讨论】:

您正在向表格视图添加内容。你想要什么类型的动画?你想动画插入新行吗? @FangmingNing 感谢您的快速回复。是的,我想将新行的插入设置为动画到底部,并且页脚视图位于最后一个带有动画的单元格下方。 【参考方案1】:

要对插入动作进行动画处理,您需要使用行动画调用insertRowsAtIndexPaths 方法。

将表格单元格元素添加到数组后,必须计算要显示的新单元格的索引路径,并创建它们的数组,如下所示

let indexes = [IndexPath(row: 0, section: 0), IndexPath(row: 1, section: 0)]

然后简单地调用下面的方法来动画插入

tableView.beginUpdates()
tableView.insertRowsAtIndexPaths(indexes, withRowAnimation: .Fade)
tableView.endUpdates()

【讨论】:

【参考方案2】:

如果您希望页脚视图停留在屏幕底部,那么它不应该是页脚视图。它应该是固定到您的视图控制器视图的自定义 UIView。每当您在 tableView 上调用 reloadData() 时,您同样可以在固定到底部的新自定义视图上调用 present/animate 函数并在屏幕上/屏幕外对其进行动画处理。

【讨论】:

【参考方案3】:

当 UITableView 在追加行后重新加载时,我通过在 UIView 上使用动画解决了这个问题。

UIView.transition(with: tableView, duration: 0.2, options: .curveEaseIn, animations: self.tableView.reloadData(), completion: (success) in
            if success 
                if self.familyAModelArray.count >= 3
                    self.scrollToBottom()
                
            
        )

如果我的数组长度大于 3,则通过将 UITableView 滚动到顶部,页脚视图会固定在底部。

func scrollToBottom()
    DispatchQueue.global(qos: .background).async 
        let indexPath = IndexPath(row: self.familyAModelArray.count-1, section: 0)
        self.tableView.scrollToRow(at: indexPath, at: .top, animated: true)
    

这个解决方案让我的表格视图看起来很漂亮。

【讨论】:

以上是关于如何在 UITableView swift 3 中使用动画在底部滚动的主要内容,如果未能解决你的问题,请参考以下文章

如何让 json 在 Swift 3 中填充 UITableView?

如何在 Swift 3 中以编程方式在 UIImageview 中添加 UITableview

iOS / Swift 3.0:如何确定 UITableView 中当前可见的行?

如何使用关系 Swift 3 显示 UITableView

如何在 UITableView swift 3 中使用动画在底部滚动

如何从 UITableView 中的 UITableViewCells 中的 UITextFields 中获取文本并将它们放入数组中(Swift 3)?