使用 NSLayoutConstraint 时出错

Posted

技术标签:

【中文标题】使用 NSLayoutConstraint 时出错【英文标题】:Error using NSLayoutConstraint 【发布时间】:2015-01-18 21:32:57 【问题描述】:

我有 2 个故事板。第一个 - 一个名为“st1”的 tableViewController 具有带有 5 个标签、5 个文本字段和 2 个按钮的静态单元格。下一个storyBoard——一个名为“st2”的viewController有一个tableView。

当我从 st1 转到 st2 时,它给了我下面的错误。

我正在使用尺寸类和自动布局。

2015-01-18 13:10:40.199 myApp[1108:35975] Unable to simultaneously satisfy constraints.

Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints) 

(

    "<NSLayoutConstraint:0x7fa1f1d2a310 V:[UITextField:0x7fa1f1d283c0(30)]>",

    "<NSLayoutConstraint:0x7fa1f1d30780 UITextField:0x7fa1f1d283c0.top == UITableViewCellContentView:0x7fa1f1d271a0.topMargin>",

    "<NSLayoutConstraint:0x7fa1f1d30870 UITableViewCellContentView:0x7fa1f1d271a0.bottomMargin == UITextField:0x7fa1f1d283c0.bottom - 3>",

    "<NSLayoutConstraint:0x7fa1f1d64d00 'UIView-Encapsulated-Layout-Height' V:[UITableViewCellContentView:0x7fa1f1d271a0(43.5)]>"

)



Will attempt to recover by breaking constraint 



Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.

The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.

它显示此错误 5 次。我只是把它剪掉了,这样更容易阅读。

如你所知,我是初学者,所以请不要对我太苛刻。

【问题讨论】:

当我删除所有 textViews 时,它不会给我这个错误 【参考方案1】:

看起来它在抱怨,因为您已将文本字段高度限制为 30(即第一个约束中的“(30)”),但您还希望文本字段的顶部位于其顶部边缘单元格和单元格底部边缘的底部 -3 和单元格的高度为 43.5。因此,您同时要求文本字段的高度为 30 和 40.5 - 这是一个冲突。

要么限制文本字段的顶部和底部并且不设置高度

设置高度,不设置底部约束

调整单元格的高度(可能不是最佳方案)

【讨论】:

以上是关于使用 NSLayoutConstraint 时出错的主要内容,如果未能解决你的问题,请参考以下文章

未设置 NIB“使用自动布局”时,我可以使用 NSLayoutConstraint 吗?

在 NSLayoutConstraint 上设置运行时属性

滚动 UITableView 时如何创建 NSLayoutConstraint

使用 NSLayoutConstraint 实例化和设置 UIButton 子类的大小

如何在 iOS 6 中使用 NSLayoutConstraint?

NSLayoutConstraint 冲突。 UIView-Encapsulated-Layout-Height