我有一个 UITableView,我想以编程方式将一行从位置 N1 移动到位置 N2,我希望它从旧位置到新位置进行动画处理。我查看了 UITableView 文档,但只看到插入、重新加载和删除。您知道我可以通过编程方式执行此操作的方法吗?
一些注意事项:
我知道我可以设置从位置 N1 删除的动画,同时设置插入到位置 N2 的动画。这是我的后备方案,但我希望用户了解它确实是从 N1 转移到 N2。
我不是在谈论允许用户将它从一个地方拖到另一个地方。我知道如何做到这一点,我正在寻找一种方法来以编程方式启动和动画移动。
最佳答案
我过去处理过类似的事情,解决方案不是很好,但它确实有效。
基本上,您必须进行一些数学运算才能计算出该行在屏幕上的位置。然后根据 UITableView
的 contentOffset
的 y
属性进行调整。
你可以这样做:
[myView convertPoint:localPosition toView:nil];
然后您将构造一个与您的 View 相同的新 UIView
。将其框架直接设置在您要移动的 UITableViewCell
之上。将其添加为您应用的主 UIWindow
的 subview 。
您需要在 UITableView
上将 userInteractionEnabled
或 scrollEnabled
设置为 NO
而所有这些都是继续这样用户就不会在整个过程中弄乱事物的位置(只要记住在一切都完成动画后将其设置回 YES
)。
然后根据最合理的方式将其设置为新位置。
我知道您可能需要在所有这些过程中滚动 UITableView
,这会使事情变得相当复杂,但您也可以为滚动设置动画。 p>
如果在您的应用中有必要,您当然必须对要设置动画的行执行类似操作。
就像我说的那样,这既不简单也不漂亮。但我确实理解您想要完成的事情,而且我认为如果正确实现,效果会非常棒。
如果有人对如何在不发疯的情况下完成这项工作有更好的想法,我很想知道,但这种类型的实现是我能做到的最好的。
关于iphone - 以编程方式将 UITableView 行从一个位置移动/动画化到另一个位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5109250/