繁体   English   中英

由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:未知的布局属性'

[英]Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: Unknown layout attribute'

我试图以编程方式将约束添加到UIView内的按钮:

let constraint = NSLayoutConstraint(item: arrowButton, attribute: NSLayoutAttribute.LeadingMargin, relatedBy: NSLayoutRelation.Equal, 
                 toItem: self, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1, constant: 10)
arrowButton.addConstraint(constraint)

我希望按钮的前边距距离视图的左边距为10。 此代码在视图内部运行,因此self是视图。 上面的代码给出了错误:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** +[NSLayoutConstraint constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:]: Unknown layout attribute'

我究竟做错了什么?

NSLayoutAttributeNotAnAttribute:

占位符值,用于指示约束的第二个项目和第二个属性未在任何计算中使用。 在创建为属性指定常量的约束时使用此值。 例如,item1.height> = 40. 如果约束只有一个项目,则将第二个项目设置为nil,并将第二个属性设置为NSLayoutAttributeNotAnAttribute。

你有两个项目: arrowButtonself ,但你指定NSLayoutAttributeNotAnAttribute说我只需要一个项目。 这就是它失败的原因。

我建议您先使用storybard或xib来练习自动布局,然后再感觉它是如何工作的,然后开始编码。 你明显误解了自动布局。 如果要定义两个视图的布局关系,则NSLayoutAttributeNotAnAttribute将永远无效。

NSLayoutAttribute.NotAnAttribute

我想这就是问题所在。 您传入NotAnAttribute

此外,它应该是self.addConstraint(constraint)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM