Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UIStackView-拖动以重新排列排列的子视图?_Ios_Swift_Uitableview_Uikit_Uistackview - Fatal编程技术网

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

Ios UIStackView-拖动以重新排列排列的子视图?,ios,swift,uitableview,uikit,uistackview,Ios,Swift,Uitableview,Uikit,Uistackview,我正在尝试获取一些建议,以了解如何实现在UITableView但在UIStackView上发现的相同类型的“拖动以重新排序”行为 到目前为止,我的想法是: 向每个排列的子视图添加长按手势识别器 长按时,在主视图中添加覆盖视图作为子视图,并填充整个主视图。当我拖动临时“重新排序”视图时,这个覆盖视图将充当排序的“画布”,我们将其称为tempView-around(在第4章中有更多介绍) 将arrangedSubview的alpha设置为0(设置hidden=true将导致UIStackView动画

我正在尝试获取一些建议,以了解如何实现在
UITableView
但在
UIStackView
上发现的相同类型的“拖动以重新排序”行为

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

  • 向每个排列的子视图添加长按手势识别器
  • 长按时,在主视图中添加覆盖视图作为子视图,并填充整个主视图。当我拖动临时“重新排序”视图时,这个覆盖视图将充当排序的“画布”,我们将其称为
    tempView
    -around(在第4章中有更多介绍)
  • arrangedSubview
    alpha
    设置为0(设置
    hidden=true
    将导致
    UIStackView
    动画接近,就好像它被移除一样
  • 将一个
    tempView
    添加到叠加视图(请参见3),其初始帧与
    arrangedSubview
  • 向上或向下拖动
    临时视图
    ,并根据
    临时视图
    的位置,在计算出的索引处插入/删除实际的
    排列子视图
  • 收听长按
    状态
    结束时的声音
    ,设置
    排列Subview.alpha=1
    并从主视图中删除覆盖视图

  • 有什么建议吗?有人看到什么明显的漏洞吗?你会改变什么?你会朝着什么方向去实现这一点?

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


    请参阅我在问题帖子上关于已知问题和未来更新的最后一条评论。

    如果您只使用tableview,可能会更好,它可以很好地处理重新排序的动画和其他内容,如果您自己尝试这样做,这将需要大量的工作来复制。您需要使用堆栈的具体原因是什么view?@Fonix我知道使用UITableView会更容易,但为了(和纯粹的快乐),我正试图在UIStackView上实现这一点让它在UIStackView上工作。听起来不错-你成功构建了它吗?我已经开始将我的大部分代码移植到UIStackView,这是对我的旧代码的巨大胜利。在UIStackView中重新排序视图将解决我目前的一个大问题。@Mof我确实做到了!我会抛出一个github repo,并在某个时候发送给你她今晚还是明天。@ClayEllis很棒-我很期待。谢谢。