ios - 如何管理 iOS 中可移动 View 的约束?

标签 ios swift nslayoutconstraint

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

当抽屉保持打开状态并且屏幕上的其他一些 View 得到更新时,就会出现问题。 我了解 viewDidLayoutSubviews() 在此实例中被调用。 因此,保持打开状态的抽屉菜单突然关闭,打乱了“抽屉关闭”动画,并且按钮无法像在“抽屉关闭”状态下那样获得预期的 View 。

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

现在回到我的问题 - 我们如何设置/管理 View 的约束 哪些会因为动画而移动运行时间?

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

enter image description here

最佳答案

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

如何做的简短预览:

yourConstraint.constant = newValue

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

可以找到有关此的更多信息here .

关于ios - 如何管理 iOS 中可移动 View 的约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49606377/

相关文章:

iphone - 便利构造函数会增加应用程序的大小吗?

ios - 在 block 中具有强引用的弱变量:不会创建保留周期吗?

swift - 在 Swift 中以编程方式发送 SMS/iMessage

ios - 停用 NSLayoutConstraint iOS 7

ios - 从 Today Extension 打开 url

swift - 如何使用 Do-Try-Catch 修复 "Invalid conversion from throwing function of type X to non-throwing function type Y"

iOS swift : How to merge two shapes into a solid color shape using UIBezierPath?

ios - 如何更新之前在代码中设置的 NSLayoutConstraint 常量? - swift

swift - 在 nslayout 约束上使用 uipangesture

ios - Alamofire:如何顺序下载文件