gpt4 book ai didi

ios - tableView.reloadData() 结束其他动画,如何解决?

转载 作者:搜寻专家 更新时间:2023-11-01 07:23:49 26 4
gpt4 key购买 nike

当我通过向右滑动删除一行时,我正在制作一个动画效果很好的待办事项列表:

func toDoItemDeleted(toDoItem: ToDoItem) {
let index = (toDoItems as NSArray).indexOfObject(toDoItem)
if index == NSNotFound { return }

// could removeAtIndex in the loop but keep it here for when indexOfObject works
toDoItems.removeAtIndex(index)

// use the UITableView to animate the removal of this row
tableView.beginUpdates()
let indexPathForRow = NSIndexPath(forRow: index, inSection: 0)
tableView.deleteRowsAtIndexPaths([indexPathForRow], withRowAnimation: .Fade)
tableView.endUpdates()
// refresh gradient effect of rows
tableView.reloadData()
}

所以基本上我删除数据,然后使用 tableView.deleteRowsAtIndexPaths([indexPathForRow], withRowAnimation: .Fade) 制作一个移除动画,然后我决定修复所有现有行(背景)的渐变效果行的颜色,从上到下从红色到黄色,删除一行会破坏渐变效果)通过调用 reloadData()

结果是 reloadData() 在淡入淡出动画开始之前发生得太快,从而杀死了动画。我的问题是:
1. 为什么?2. 如何解决?

最佳答案

你需要使用动画 block 来实现这一点。试试这个:-

UIView.animateWithDuration(0.3, delay: 0,
options: [], animations: {
toDoItems.removeAtIndex(index)
// use the UITableView to animate the removal of this row
tableView.beginUpdates()
let indexPathForRow = NSIndexPath(forRow: index, inSection: 0)
tableView.deleteRowsAtIndexPaths([indexPathForRow], withRowAnimation: .Fade)
tableView.endUpdates()
// refresh gradient effect of rows

}, completion: { _ in
tableView.reloadData()
})

根据需要设置持续时间。(0.3 或您想要的)

关于ios - tableView.reloadData() 结束其他动画,如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37265555/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com