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

Cla*_*lis 6 uitableview uikit ios swift uistackview

我正在尝试获得一些关于如何实现相同类型的"拖动重新排序"行为UITableView的建议UIStackView.

到目前为止,这就是我的想法:

  1. 为每个arrangedSubviews 添加长按手势识别器
  2. 长按,将叠加层UIView作为子视图添加到主视图,并填充整个主视图.这个叠加视图将作为各种各样的"画布",因为我拖动临时"重新排序"视图 - 我们称之为tempView- 周围(更多关于4)
  3. 设置alphaarrangedSubview0(设置hidden = true会导致UIStackView动画在关闭,如果它被拆除.
  4. 使用与初始帧相同的初始帧添加tempView到叠加视图(参见3)arrangedSubview
  5. tempView向上或向下拖动,arrangedSubview根据位置插入/删除计算出的索引处的实际值tempView.
  6. 听一听当长按state.Ended,设置arrangedSubview.alpha = 1并从主视图叠加视图.

有什么建议?任何人看到的任何明显的洞?你会改变什么?你会朝哪个方向去做?

Cla*_*lis 9

我创建了一个自定义控件来解决这个问题,可以在这里找到。

请参阅我对有关已知问题和未来更新的问题帖子的最后评论。