【问题标题】:How to manage constraints of movable views in iOS?如何在 iOS 中管理可移动视图的约束?
【发布时间】:2018-04-02 06:30:53
【问题描述】:

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

当抽屉处于打开状态并且屏幕上的其他一些视图得到更新时,就会出现问题。 我知道 viewDidLayoutSubviews() 在这种情况下被调用。 正因为如此,打开的抽屉菜单突然关闭,与“抽屉关闭”动画相混淆,并且按钮无法在“抽屉关闭”状态下获得预期的视图。

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

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

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

【问题讨论】:

  • 你能分享你的屏幕图像吗?
  • 您需要使用约束为视图更改设置动画。请阅读这篇文章了解更多信息:stackoverflow.com/a/12664093/3883492
  • 您可以管理collapse/ open of drawer,方法是采用一个标志,该标志将在分配约束值之前实施检查。发布您的代码以获取更多详细信息..
  • @dvp.petrov,非常感谢您的帮助。更改前导约束而不是框架 x 位置有效。您能否发表您的评论作为答案,以便我可以将其标记为已解决? RajeshKumarR 和 Ankit Jayaswal,感谢您随时准备提供帮助!

标签: ios swift nslayoutconstraint


【解决方案1】:

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

如何做到这一点的简短预览:

yourConstraint.constant = newValue

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

更多信息可以在here找到。

【讨论】:

    猜你喜欢
    • 2016-11-10
    • 2015-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多