UIView内部的UITableView具有20px Top Space约束

时间:2016-01-19 12:44:20

标签: ios xcode autolayout xcode-storyboard

我有一个“无法同时满足约束”。在我的iOS应用程序日志中,我无法理解或修复。

我有一堆UIViews垂直向下移动我的UIViewController。它们中的每一个都具有设定高度,在这种情况下为120px,对于其上方的视图具有顶部空间约束,并且对于其下方的视图具有底部空间约束。

enter image description here

然后在视图内部有一个带有20px Top Space约束的UITableView。这意味着当视图的高度发生变化时,表视图将变得更大,但仍然具有20px的顶部空间。

enter image description here

这非常有效,并且在Storyboard级别没有发出警告,但是向控制台提供了以下错误:

  

无法同时满足约束条件。可能至少有一个   以下列表中的约束是您不想要的。尝试   这个:(1)看看每个约束并试着弄清楚你是哪个   不要指望; (2)找到添加了不需要的约束的代码   或约束并修复它。 (       “< NSLayoutConstraint:0x7f939bf47b30 V:[UIView:0x7f939bf5ad20(0)]>”,       “< NSLayoutConstraint:0x7f939bf47bd0 V:| - (20) - [TabItemsTableView:0x7f939a944400](姓名:   '|':UIView:0x7f939bf5ad20)>“,       “< NSLayoutConstraint:0x7f939bf47c20 V:[TabItemsTableView:0x7f939a944400] - (0) - |(姓名:   '|':UIView:0x7f939bf5ad20)>“)

     

将尝试通过违反约束来恢复   < NSLayoutConstraint:0x7f939bf47c20   五:[TabItemsTableView:0x7f939a944400] - (O) - | (名称:   '|':UIView:0x7f939bf5ad20)>

     

在UIViewAlertForUnsatisfiableConstraints处创建一个符号断点   在调试器中捕获它。方法中的   在UIView中列出的UIConstraintBasedLayoutDebugging类别    也可能会有帮助。

20px Top Space是为了给出一个分隔符的效果,如果它们的表视图有行,则只分隔视图,否则它们的高度设置为0,整个视图消失。如果20px Top Space在父视图上,那么当高度为0时,20px将保持不变。

1 个答案:

答案 0 :(得分:0)

好的,我已经解决了这个问题。之所以发生这种情况,是因为我的上边距为20px然后我将父视图设置为0的高度,所以它不知道是否要监听20的上边距或0边界的下限高度为0。

要解决此问题,我将前20px约束的优先级设置为999(当默认优先级为1000时),以便在需要在两者之间进行选择时忽略此约束。