当前位置: 首页 > 知识库问答 >
问题:

约束的快速动画不起作用

慕容光启
2023-03-14

下面的函数只是将视图移动到一个新位置。它不显示动画:

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    UIView.animate(withDuration: 0.9, animations: {
        //self.leadingConst.constant -= 200

        self.view.setNeedsLayout()
    })
}

共有2个答案

汤承允
2023-03-14

几周前,我遇到了同样的问题。问题归结为几件事。我混合了以编程方式添加视图和将它们添加到情节提要中,我没有调用layoutSubviews(),而是将我的约束作为IBOutlets添加为弱变量。因此,我建议只使用情节提要(否则动画会很快变得复杂),并将leadingConst约束设置为变量。您还应该在动画块中移动要设置动画的对象,然后使用完成块重置约束。

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    view.layoutSubviews()
    UIView.animate(withDuration: 0.9, animations: {

        //something like this
        self.animatableObject.origin.x -= 200

    }, completion: {(finished: Bool) in

        self.leadingConst.constant -= 200

    })
}

我不确定你想做什么动画,所以原始的x行只是一个例子。

胡曾笑
2023-03-14

<代码>自我。主导施工。常量-=200应该在UIView之外。设置动画,如下所示:

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    self.leadingConst.constant -= 200
    UIView.animate(withDuration: 0.9, animations: {
        self.view.setNeedsLayout()
    })
}

参考:尝试在swift中设置约束动画

 类似资料:
  • 问题内容: 我有一个UITextField我想在点击时扩大它的宽度。我设置了约束,并确保左侧的约束的优先级低于我要尝试在右侧进行动画的优先级。 这是我尝试使用的代码。 这可行,但是似乎只是瞬间发生,似乎没有任何动作。我尝试将其设置为10秒以确保没有遗漏任何东西,但得到的结果相同。 nameInputConstraint是我控制拖动以从IB连接到我的类的约束的名称。 谢谢您的帮助! 问题答案: 您需

  • 我是AutoLayout的新手。我已经知道很多关于这个autoLayout的问题和教程,但是我还没有找到我的解决方案。所以提前感谢您的任何帮助。 我的要求是什么? 我必须制作UIView,它将在按下屏幕底部带有动画的按钮后出现在屏幕上。(如键盘)。我使用autoLayout在xib文件中创建了此UIView。到目前为止,我已经这样做了。 在ViewDidLoad中: 在这个视图中,它包含(滚动视图

  • 目标:应用基于约束的动画,以便UILabel在保持其顶锚约束的同时更改高度。 问题:约束和视图会适当更新,但似乎存在计时差异——高度约束会首先更改(好像从零高度开始),而不会固定到顶部锚定约束。 感谢您的反馈或指导。

  • 问题内容: 首先,我创建了一个表,例如 然后在该表中插入值 MySQL没有显示错误,它接受了值。 问题答案: 如果您使用MySQL 8.0.15或更早版本,则MySQL参考手册会说: 该CHECK子句已解析,但所有存储引擎均将其忽略。 尝试触发… 希望能有所帮助。

  • 我有两个组件和。每个组件都是由<code>ConstraintLayout</code>创建的。现在,我从上面的组件创建<code>WelcomeScreen</code>。 用例1:使用静态< code>ConstraintLayout(在< code>ConstraintLayout内的< code>ConstraintLayout) 结果:布局预览不显示任何内容 用例2:<代码>Welcom

  • 我设置了一个动画,以在打开另一个开关/标签时隐藏一个开关/标签。同时,刚刚打开的开关向上移动。这里的简单解释非常有效。 但是,当我在开关/标签关闭后尝试向下移动时,它不会移动。另一个开关会很好地重新出现,但不会触发顶部约束更改。 我对这种类型的设置和动画都是以编程方式进行的相对较新,在花了一个小时之后,我被难住了。是因为我正在制作相对于另一个顶部约束的动画吗?如果它第一次工作,这有什么关系?即使隐