UIStackView - 拖动以重新排列排列的子视图?
UIStackView - drag to reorder arranged subviews?
我正在尝试就如何实现在 UITableView
和 UIStackView
.[=27= 上发现的相同类型的 "drag to reorder" 行为寻求一些建议]
目前我的想法是:
- 为每个
arrangedSubview
添加一个长按手势识别器
- 长按时,添加一个叠加层
UIView
作为主视图的子视图,并填满整个主视图。当我拖动临时 "reorder" 视图时,此覆盖视图将充当 "canvas" 的某种形式——我们将其称为 tempView
——围绕 (更多信息在 4)
- 将
arrangedSubview
的 alpha
设置为 0(设置 hidden = true
将导致 UIStackView
动画关闭,就好像它已被删除一样。
- 添加一个
tempView
到叠加视图 (见 3) 与 arrangedSubview
具有相同的初始帧
- 向上或向下拖动
tempView
,insert/remove 根据 tempView
. 的位置计算出的索引处的实际 arrangedSubview
- 监听长按
state
为.Ended
并设置arrangedSubview.alpha = 1
并从主视图中移除叠加视图
有什么建议吗?任何人看到的任何明显的洞?你会改变什么?你会朝哪个方向去实现这个目标?
我已经创建了一个自定义控件来解决可以找到的这个问题here。
关于已知问题和未来更新,请参阅我对 post 问题的最后评论。
我正在尝试就如何实现在 UITableView
和 UIStackView
.[=27= 上发现的相同类型的 "drag to reorder" 行为寻求一些建议]
目前我的想法是:
- 为每个
arrangedSubview
添加一个长按手势识别器 - 长按时,添加一个叠加层
UIView
作为主视图的子视图,并填满整个主视图。当我拖动临时 "reorder" 视图时,此覆盖视图将充当 "canvas" 的某种形式——我们将其称为tempView
——围绕 (更多信息在 4) - 将
arrangedSubview
的alpha
设置为 0(设置hidden = true
将导致UIStackView
动画关闭,就好像它已被删除一样。 - 添加一个
tempView
到叠加视图 (见 3) 与arrangedSubview
具有相同的初始帧
- 向上或向下拖动
tempView
,insert/remove 根据tempView
. 的位置计算出的索引处的实际 - 监听长按
state
为.Ended
并设置arrangedSubview.alpha = 1
并从主视图中移除叠加视图
arrangedSubview
有什么建议吗?任何人看到的任何明显的洞?你会改变什么?你会朝哪个方向去实现这个目标?
我已经创建了一个自定义控件来解决可以找到的这个问题here。
关于已知问题和未来更新,请参阅我对 post 问题的最后评论。