iphone - 以编程方式将 UITableView 行从一个位置移动/动画化到另一个位置

标签 iphone ipad ios uitableview

我有一个 UITableView,我想以编程方式将一行从位置 N1 移动到位置 N2,我希望它从旧位置到新位置进行动画处理。我查看了 UITableView 文档,但只看到插入、重新加载和删除。您知道我可以通过编程方式执行此操作的方法吗?

一些注意事项:

  • 我知道我可以设置从位置 N1 删除的动画,同时设置插入到位置 N2 的动画。这是我的后备方案,但我希望用户了解它确实是从 N1 转移到 N2。

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

最佳答案

我过去处理过类似的事情,解决方案不是很好,但它确实有效。

基本上,您必须进行一些数学运算才能计算出该行在屏幕上的位置。然后根据 UITableViewcontentOffsety 属性进行调整。

你可以这样做:

[myView convertPoint:localPosition toView:nil];

然后您将构造一个与您的 View 相同的新 UIView。将其框架直接设置在您要移动的 UITableViewCell 之上。将其添加为您应用的主 UIWindow 的 subview 。

您需要在 UITableView 上将 userInteractionEnabledscrollEnabled 设置为 NO 而所有这些都是继续这样用户就不会在整个过程中弄乱事物的位置(只要记住在一切都完成动画后将其设置回 YES)。

然后根据最合理的方式将其设置为新位置。

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

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

就像我说的那样,这既不简单也不漂亮。但我确实理解您想要完成的事情,而且我认为如果正确实现,效果会非常棒。

如果有人对如何在不发疯的情况下完成这项工作有更好的想法,我很想知道,但这种类型的实现是我能做到的最好的。

关于iphone - 以编程方式将 UITableView 行从一个位置移动/动画化到另一个位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5109250/

相关文章:

iPhone CFSocket 传入/传出消息

iphone - Info.plist文件 "no such file"错误

iphone - 究竟什么时候*必须*应用程序包含 Reachability 类来测试网络可达性?

ios - 如何从 Xcode 的代码完成中排除某些术语? (自动完成,内容辅助)

ios - 检测旋转何时完成并移动到新场景

iphone - 组织复杂 iPhone 项目文件结构的最佳方式?

iphone - 核心数据内存分配

iphone - 对于 iPad/iPhone,我可以检测到用户何时因不活动而打开键盘锁吗?

iOS 9 : Black Background on buttons, 和某些设备上的性能错误

ios - 检查封闭路径内所有点的方法