视图和超级视图之间的 NSSpace 属性必须匹配(AutoLayout)

Posted

技术标签:

【中文标题】视图和超级视图之间的 NSSpace 属性必须匹配(AutoLayout)【英文标题】:Attributes must match for NSSpace between view and superview (AutoLayout) 【发布时间】:2018-05-21 06:41:50 【问题描述】:

我在视图控制器中有以下视图层次结构:

视图->子视图->按钮

按钮必须放置在屏幕总宽度的某个比例距离的右侧。子视图(按钮的父视图)的前导和尾随约束为零。现在在情节提要中,我对按钮的前缘有以下约束:

button.leading = 343/375*trailing

当我运行应用程序时,按钮位于正确的位置,但出现以下 AutoLayout 错误:

[LayoutConstraints] Could not resolve symbolic constant for constraint, because: Attributes must match for NSSpace between view and superview.
mismatched attributes: leading of <UIButton: 0x7f86efd51410; frame = (378.667 -1.33333; 8 21); opaque = NO; autoresize = RM+BM; userInteractionEnabled = NO; layer = <CALayer: 0x600000433780>>, and trailing of <UIView: 0x7f86efe42410; frame = (0 60; 414 277); autoresize = RM+BM; gestureRecognizers = <NSArray: 0x600000447830>; layer = <CALayer: 0x60c000238660>>
Use a symbolic breakpoint at NSLayoutConstraintFailedToFindDefaultResolvedValueForSymbolicConstant to debug.

【问题讨论】:

【参考方案1】:

打开界面生成器,找到约束导致错误并尝试将常量字段中的值从Standard更改为0

【讨论】:

以上是关于视图和超级视图之间的 NSSpace 属性必须匹配(AutoLayout)的主要内容,如果未能解决你的问题,请参考以下文章

如何创建一个序列来迭代从 UIView 向上到视图层次结构到根的所有祖先(超级视图)?

视图和超级视图之间的自动布局标准空间不起作用

ScrollView中子视图控制器和超级视图控制器之间的通信

如何在 xib 文件中使用子视图和超级视图之间的纵横比?

如何使用 Autolayout 调整我的超级视图大小以匹配其子视图的大小?

超级视图框架更改后更新子视图的约束