不等式约束问题

Posted

技术标签:

【中文标题】不等式约束问题【英文标题】:Ineqaulity constrains issue 【发布时间】:2016-03-09 17:13:42 【问题描述】:

我有不平等约束的问题。我想让 facebook_logo.Top 约束等于 = 136,但是当例如键盘出现时,我想将视图滚动到顶部,在这种情况下,可以隐藏 facebook 徽标,为了实现它,我添加了第二个约束。所以现在我有两个约束:

facebook_logo.Top 布局 facebook_logo.Top 布局 >= -100

它对我有用,但 Xcode 显示自动布局错误:不等式约束歧义。

你能建议如何解决它。

【问题讨论】:

【参考方案1】:

我认为你应该像这样收听键盘通知:

NSNotificationCenter.defaultCenter().addObserver(vc, selector: "keyboardWillShow:", name: "UIKeyboardWillShowNotification", object: nil)

NSNotificationCenter.defaultCenter().addObserver(vc, selector: "keyboardWillHide:", name: "UIKeyboardWillHideNotification", object: nil)

并根据userInfoDictionary中的UIKeyboardFrameBeginUserInfoKey and UIKeyboardFrameEndUserInfoKey修改约束。

【讨论】:

【参考方案2】:

将所有视图放在滚动视图中,给出适当的约束,然后使用 IQKeyboardManager。它会自行管理。

【讨论】:

【参考方案3】:

您应该添加一个等于facebook_logo.Top Layout = 136 的约束并使用优先级 exp :

facebook_logo.Top Layout = 136 -> 优先级:999 facebook_logo.Top Layout <= 136 -> 优先级:1000 facebook_logo.Top Layout >= -100 -> 优先级:1000

【讨论】:

很遗憾,它不起作用,xcode 错误消失了,但徽标图像不会移到顶部。 您应该使用约束优先级值。我相信您会找到适用于所有设备屏幕尺寸的最佳配置【参考方案4】:

实际上我发现了我的问题,为了解决它,我删除了约束 facebook_logo.Top 布局并添加了另一个 facebook_logo.Bottom 布局。现在,当 kwyboar 出现时,所有 UI 元素都固定到底部布局指南和视图可以移动到顶部。感谢您的帮助。

【讨论】:

以上是关于不等式约束问题的主要内容,如果未能解决你的问题,请参考以下文章

添加除法不等式约束

07-内点法(不等式约束优化算法)

具有两个不等式约束的歧义

遗传算法能否解决同时包含整数约束和等式约束的优化问题?

等式约束优化问题

差分约束