[NSLayoutConstraint constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:]:约束

Posted

技术标签:

【中文标题】[NSLayoutConstraint constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:]:约束必须包含第一个布局项\'【英文标题】:[NSLayoutConstraint constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:]: Constraint must contain a first layout item'[NSLayoutConstraint constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:]:约束必须包含第一个布局项' 【发布时间】:2013-12-14 00:22:43 【问题描述】:

我在 viewdidload 方法中添加了这段代码来将垂直空间约束添加到最顶层的视图

基于苹果技术问答QA1797 防止状态栏覆盖您的视图

 [NSLayoutConstraint constraintWithItem:self.toolbar1
                             attribute:NSLayoutAttributeTop
                             relatedBy:NSLayoutRelationEqual
                                toItem:self.topLayoutGuide
                             attribute:NSLayoutAttributeBaseline
                            multiplier:1.0
                              constant:0.0];

但它使应用程序崩溃并显示此错误 NSInvalidArgumentException',原因:'[NSLayoutConstraint constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:]: Constraint must contain a first layout item'

我为什么会收到此错误以及如何解决此错误的任何线索。

感谢您的帮助。

【问题讨论】:

self.toolbar1 为零吗? 【参考方案1】:

如果两个项目都为零,则会发生此错误。您的第一项“self.toolbar1”很可能是 nil。

【讨论】:

【参考方案2】:

当您在 init 方法中设置 UI 代码时,当您的视图尚未创建时,就会发生这种情况。尝试将您的代码移动到 viewDidLoad 方法,看看它是否有效。

【讨论】:

以上是关于[NSLayoutConstraint constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:]:约束的主要内容,如果未能解决你的问题,请参考以下文章

如何检查 NSLayoutConstraint 是不是动画

如何创建返回 NSLayoutConstraint 的函数

NSLayoutConstraint 设置优先级

错误的 NSLayoutConstraint 导致黑屏

无法获取 NSLayoutConstraint 的约束

更改 NSLayoutConstraint 的常量