通过其约束为 UIView(包含带约束的子组件)设置动画
Posted
技术标签:
【中文标题】通过其约束为 UIView(包含带约束的子组件)设置动画【英文标题】:Animating a UIView (that contains child components WITH constraints) by its constraints 【发布时间】:2017-05-05 03:37:09 【问题描述】:我最近试图通过它的约束为一个 UIView 动画,其中包含一个文本字段(有约束)。我成功地移动了 UIView,但无论出于何种原因,当 UIView 移动并且 X-Code 调试器抛出错误时,它内部的文本字段会被“弄脏”:[LayoutConstraints] Unable to simultaneously satisfy constraints.
。我正在将 UIView 移到屏幕外,所以也许这就是原因。我的代码在这里:
self.mainViewLeftConstraint.constant = self.menuView.frame.width
self.mainViewRightConstraint.constant = self.mainViewRightConstraint.constant + self.menuView.frame.width
UIView.animate(withDuration: 0.2)
self.view.layoutIfNeeded()
在上面的代码中,mainView 是屏幕的宽度,menuView 大约是一半。抱歉,如果这个问题有点难以理解,因为没有任何类型的视觉指南很难解释这个问题。
【问题讨论】:
你能分享故事板的截图吗? 确保文本字段的约束只在它和它的超级视图之间。 @vacawama 是对的.. 这意味着您的文本字段约束未使用您要设置动画的 UIView 设置 【参考方案1】:您提到的错误[LayoutConstraints] Unable to simultaneously satisfy constraints
表示UITextfield
的所有约束都不适用于UIView
(UITextfield
的超级视图)。因此,当您移动UIView
时,同时满足UITextfield
的所有约束(w.r.t UIView + w.r.t 一些其他视图)存在歧义。
【讨论】:
我重新设置了约束并确保它们都在 UIView 中,但我仍然遇到同样的错误。我读到这可能是由于我在 UIView 的两侧有两个约束,我正在移动到 ViewController 的边缘。不知道如何解决这个问题。以上是关于通过其约束为 UIView(包含带约束的子组件)设置动画的主要内容,如果未能解决你的问题,请参考以下文章