更改UITableView insertRows动画持续时间

时间:2017-02-11 16:18:56

标签: ios swift uitableview animation

我希望执行两件事之一;减慢或改变默认动画持续时间,以便将行插入UITableView或错开插入UITableView单元格,这样就会产生动画速度减慢的错觉。到目前为止,我还没有成功。

到目前为止,我已经回顾了几个相关的主题,在iOS 10中没有任何成功,Swift 3:

Change duration of UITableView animation (Insert/Delete rows with table beginUpdates)

UITableView row animation duration and completion callback

Can you do custom animations for UITableView Cell Inserts?

https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/TableView_iPhone/ManageInsertDeleteRow/ManageInsertDeleteRow.html

我尝试但未成功的一个例程是错开一行行(indexPaths)以在一秒间隔内输入,以给出动画持续时间减慢的错觉。从概念的角度来看,这似乎应该有效。但是,在第一次迭代时,调用endUpdates()时会发生NSException崩溃。

func insertNewRows() {
   // perform new data source input here
   // gather an array of index paths that will need to be inserted here
   // setup index counter here to coordinate which index path we are at
   // setup a one second timer to hit a callback that inserts one of the index paths at a time here
}

func insertOneRow() {
   // check to see if we reached the end of the index paths array and if so invalidate timer
   // if we have not reached the end of the index paths array perform the following code snippet below
   customTableView.beginUpdates()
   customTableView.insertRows(at: [indexPath], with: .bottom)
   customTableView.endUpdates()
   // The endUpdates call crashes the execution with an NSException
}

我尝试但未成功的另一个想法是将所有indexPaths添加到没有动画的UITableView中,隐藏所有行/单元格并逐个淡出它们。这个想法是基于这个答案:Can you do custom animations for UITableView Cell Inserts? 上面提到的以下想法的问题是我永远无法隐藏tableview单元格,它们都会立即进入,并且动画将在UITableView中存在单元格之后发生。

我的另一个想法是使用tableView(_:willDisplay:forRowAt :)。 https://developer.apple.com/reference/uikit/uitableviewdelegate/1614883-tableview 但是,我遇到了另一组问题,其中行/单元格没有按顺序通过此函数,我无法准确控制动画,大多数行/单元格在我隐藏它们并为其设置动画之前会显示出来。< / p>

所以,这让我想知道,执行insertRows持续时间更改有哪些选项?

  • 可能有一种方法可以通过自定义成功完成此操作 我不知道的UITableViewRowAnimation?
  • 有没有办法挂钩到UIKit&gt; UITableView和控件 我不知道的持续时间?
  • 这是不可用的,这是不适用于 原因是什么?

这些是我一直想知道的一些问题,并且我认为我会把它放在那里,以防其他人遇到过这个问题或想出最新的iOS 10解决方案。

0 个答案:

没有答案