我试图得到一些建议,如何去实现相同的"拖到重新排序"的行为在UITableView
上发现,但在UIStackView
上。
到目前为止,这是我的想法:
- 为每个
arrangedSubview
s添加一个长按手势识别器 - 长按,添加覆盖
UIView
作为主视图的子视图,并填充整个主视图。当我拖拽临时的"重新排序"视图时,这个叠加视图将充当某种"画布"——我们将其称为tempView
——围绕(更多内容在4中) - 将
arrangedSubview
的alpha
设置为0(设置hidden = true
将导致UIStackView
动画关闭,好像它被删除了。 - 添加一个
tempView
到叠加视图(见3)与arrangedSubview
相同的初始帧 - 向上或向下拖动
tempView
,并根据tempView
的位置计算索引插入/删除实际arrangedSubview
。 - 当长按
state
是.Ended
时监听,并设置arrangedSubview.alpha = 1
并从主视图中移除覆盖视图。
有什么建议吗?有没有人看到明显的漏洞?你会改变什么?你会朝哪个方向去实现这个目标?
我创建了一个自定义控件来解决这个问题,可以在这里找到。
请参阅我对已知问题和未来更新的问题帖子的最后评论。