如何管理 iOS 中可移动视图的约束?

How to manage constraints of movable views in iOS?

我有一组按钮,我以展开-折叠的方式制作动画,更像是抽屉的打开和关闭动作。我只是简单地改变这些按钮的 X 位置来实现这个并且它工作正常。 在界面生成器中设计此布局时,我已将所有这些按钮的约束设置为“drawer-closed”状态。

当抽屉保持打开状态并且屏幕上的其他一些视图得到更新时会出现问题。 我知道 viewDidLayoutSubviews() 在这种情况下被调用。 因此,打开的抽屉菜单突然关闭,弄乱了 'drawer close' 动画,并且按钮无法像在 'drawer close' 状态下那样获得预期的视图。

我想当 viewDidLayoutSubviews() 被调用时,按钮的约束会被重新初始化。

现在来回答我的问题 - 我们如何 set/manage 限制视图 哪些会因为动画而移动运行时间?

我是 iOS 应用程序开发的初学者,我确实回答了有关 以编程方式管理约束 viewDidLayoutSubviews 等问题,但我做不到在我遇到的情况下找不到标准的方法。

您可以动画化约束的变化,而不是改变框架。

如何操作的简短预览:

yourConstraint.constant = newValue

UIView.animate(withDuration: animationDuration) {
    yourView.layoutIfNeeded()
}

有关此的更多信息,请参见 here