我希望执行两件事之一;减慢或改变默认动画持续时间,以便将行插入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?
我尝试但未成功的一个例程是错开一行行(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持续时间更改有哪些选项?
这些是我一直想知道的一些问题,并且我认为我会把它放在那里,以防其他人遇到过这个问题或想出最新的iOS 10解决方案。