UIStackView – 拖动重新安排的子视图?

我试图得到一些build议,关于如何去实现UITableView但在UIStackView上find同样的“拖动重新sorting”的行为。

到目前为止,这是我在想什么:

  1. 为每个arrangedSubview的子视图添加一个长按手势识别器
  2. 长按,添加覆盖UIView作为子视图到主视图,并填充整个主视图。 这个覆盖视图将作为一种“canvas”,因为我正在拖动临时的“重新sorting”视图(我们将这个视图称为tempView(更多地在4中)
  3. arrangedSubviewalpha arrangedSubview为0(设置hidden = true会导致UIStackViewanimationclosures,就好像被删除一样。
  4. 使用与tempView的子视图相同的初始框架将一个tempView添加到叠加视图(请参阅3)
  5. 向上或向下拖动tempView ,并根据tempView的位置在计算的索引处插入/移除实际arrangedSubview的子tempView
  6. 当长按state为“已.Ended并且设置了.Ended arrangedSubview.alpha = 1 ,请.Ended并从主视图中移除覆盖视图。

有什么build议么? 任何人都看到的任何明亮的洞? 你会改变什么? 你会去什么方向去完成这个?

我已经创build了一个自定义控件来解决这个问题,可以在这里find。

请查看我对最近发表的关于已知问题和未来更新的评论。