UIStackView - 拖动以重新排列排列的子视图?

UIStackView - drag to reorder arranged subviews?

我正在尝试就如何实现在 UITableViewUIStackView.[=27= 上发现的相同类型的 "drag to reorder" 行为寻求一些建议]

目前我的想法是:

  1. 为每个 arrangedSubview 添加一个长按手势识别器
  2. 长按时,添加一个叠加层 UIView 作为主视图的子视图,并填满整个主视图。当我拖动临时 "reorder" 视图时,此覆盖视图将充当 "canvas" 的某种形式——我们将其称为 tempView——围绕 (更多信息在 4)
  3. arrangedSubviewalpha 设置为 0(设置 hidden = true 将导致 UIStackView 动画关闭,就好像它已被删除一样。
  4. 添加一个 tempView 到叠加视图 (见 3)arrangedSubview
  5. 具有相同的初始帧
  6. 向上或向下拖动 tempView,insert/remove 根据 tempView.
  7. 的位置计算出的索引处的实际 arrangedSubview
  8. 监听长按state.Ended并设置arrangedSubview.alpha = 1并从主视图中移除叠加视图

有什么建议吗?任何人看到的任何明显的洞?你会改变什么?你会朝哪个方向去实现这个目标?

我已经创建了一个自定义控件来解决可以找到的这个问题here

关于已知问题和未来更新,请参阅我对 post 问题的最后评论。