【问题标题】:Trying to animate a NSLayoutConstraint with Swift 3尝试使用 Swift 3 为 NSLayoutConstraint 设置动画
【发布时间】:2017-05-23 07:20:48
【问题描述】:

我正在尝试为约束设置动画,但它似乎影响了整个视图。这是我用来为约束设置动画的代码。

@IBOutlet weak var personHeight: NSLayoutConstraint!

func animateBackgroundHeight() {
print("animate")
UIView.animate(withDuration: 5.0, animations: {
    self.personHeight.constant = 19 // personHeight is the IBOutlet to the constraint
    self.view.layoutIfNeeded()
})

}

当动画开始时,视图中的所有东西都会移动,但我不知道为什么。我想要动画的是视图的高度,但不影响 TextField 或按钮。将 GreyView 视为 TextField 的背景元素。

这是一张图片,向您展示我正在尝试为哪个约束设置动画(绿色)

粉色框代表父视图。 灰盒是我试图为其高度设置动画的视图。 TextField 和按钮位于 Gray Box 对象的上方。

【问题讨论】:

  • 问题是(a)动画视图和其他移动视图之间存在约束; (b) 你有不明确的限制;或者 (c) 您对现有的约束有一些困惑(例如,滚动视图是常见的混淆来源,例如 TN2154)。但是这里还不足以诊断问题。与其提供更多细节,不如将其进一步提炼到MCVE,并提供足够的细节让我们重现问题。
  • @Rob,对问题进行了编辑,我希望它更简洁。

标签: xcode uiview uiscrollview swift3 nslayoutconstraint


【解决方案1】:

毕竟你可能会为错误的视图设置动画 所以要清楚你的问题 如果您有嵌套在另一个视图中的 x 视图 并且只想为 x 视图设置动画 那么你应该 制作

self.x.layoutIfNeeded()

而不是

self.view.layoutIfNeeded()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多