gpt4 book ai didi

ios - 在具有自动布局的位置添加 subview

转载 作者:行者123 更新时间:2023-11-29 12:54:26 26 4
gpt4 key购买 nike

我有一个具有多个 subview 的 uiscrollview。它们在间距限制下一个接一个地堆叠。它们通过自动布局定义 uiscrollview 的内容大小。

每个 View 都是我的“片段 View ”——一个 100 像素的 View 。当用户点击片段 View 时,我需要用我的“消息 View ”替换它——一个更高的 View 。消息 View 具有固有的内容大小。

当我替换它时,我删除了所有约束,然后再次应用它们,以便它们将所有 View 堆叠在一起,并且新添加的消息 View 以正确的顺序插入。

这实际上工作正常,但并不流畅。我想对此进行动画处理,以便删除该片段,向下移动 View 以为更高的消息 View 腾出空间,添加新的消息 View 以及前一个片段的原点,然后我将其框架高度设置为动画以填充空间。

我有代码可以在没有自动布局的情况下执行此操作,并且效果很好。但它有大量的布局代码,我希望使用自动布局。

我试过删除/重新应用约束过程,然后将 layoutIfNeeded 放入动画 block 中。问题是新添加的消息 View 以 0,0 的原点添加,然后向下移动到其适当的位置,这不是一个好的效果。

最佳答案

您需要执行初始布局传递以首先将新 View 放置到位。

将其添加为 subview ,并通过约束为其提供正确的位置(为此目的,您可以固定到输出 View 的顶部)。调用 layoutIfNeeded,然后 删除并更新您的所有约束并像现在一样执行动 Canvas 局。

或者,在进行动 Canvas 局之前,手动将传入 View 的框架设置为与传出 View 相同。布局过程将由此而不是 CGRectZero 进行动画处理。这可能是一个更简洁的解决方案。

关于ios - 在具有自动布局的位置添加 subview ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21510994/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com