以编程方式将UITableView行从一个位置移动到另一个位置

Ken*_*and 6 iphone uitableview ipad ios

我有一个UITableView,我想以编程方式将一行从位置N1移动到位置N2,我希望它从旧位置动画到新位置.我查看了UITableView文档,我只看到插入,重新加载和删除.你知道我可以通过编程方式做到这一点吗?

几个笔记:

  • 我知道我可以从位置N1动画删除动画并同时将插入动画设置到位置N2.这是我的后备,但我希望用户明白它真的从N1转移到N2.

  • 我不是在谈论允许用户将它从一个地方拖到另一个地方.我知道如何做到这一点,我正在寻找一种方法来以编程方式启动和动画移动.

小智 4

我过去处理过类似的事情,解决方案并不漂亮,但它确实有效。

基本上你必须做一些数学计算来计算该行在屏幕上的位置。然后根据您的 的y属性进行调整。contentOffsetUITableView

你可以这样做:

[myView convertPoint:localPosition toView:nil];
Run Code Online (Sandbox Code Playgroud)

然后您将构建一个UIView与您的视图相同的新视图。将其框架设置为直接位于UITableViewCell您要移动的物体的顶部。将其添加为应用程序主视图的子视图UIWindow

当所有这些都进行时,您需要将userInteractionEnabled或设置scrollEnabledNOon UITableView,这样用户就不会在整个过程中弄乱事物的位置(只需记住将其设置回YES所有动画完成时即可)。

然后将其动画到新的位置,然而这是最有意义的。

我知道您可能必须UITableView在所有这些过程中滚动,这使事情变得相当复杂,但您也可以为滚动设置动画。

当然,如果您的应用程序中有必要,您必须对要设置动画的行执行类似的操作。

就像我说的,这并不容易或漂亮。但我确实理解你想要实现的目标,并且我认为当它正确实现时,效果是超级棒的。

如果有人对如何在不发疯的情况下实现这一目标有更好的想法,我很想知道,但这种类型的实现是我能做的最好的。