我需要修改视图的前导空间。这是我的代码
let advSearchViewAddLeadingConstraint: NSLayoutConstraint = NSLayoutConstraint(
item:advancedSearchView,
attribute:NSLayoutAttribute.Leading,
relatedBy:NSLayoutRelation.Equal,
toItem:self.view,
attribute:NSLayoutAttribute.NotAnAttribute,
multiplier:0,
constant:200)
self.view.addConstraint(advSearchViewAddLeadingConstraint)
通过使用此代码我正在崩溃
*由于未捕获的异常终止应用' NSInvalidArgumentException',原因:' * + [NSLayoutConstraint constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant: ]:未知的布局属性'
答案 0 :(得分:1)
我会以相反的方式工作。创建一个包含视图并拖动IBOutlet以获得前导空间约束。然后只需更改常量,它应该更好。
leadingConstraint.constant = 200
self.view.layoutIfNeeded()
答案 1 :(得分:0)
您可能需要NSLayoutAttribute.Leading
而不是NSLayoutAttribute.NotAnAttribute
。如果您要提供两个项目,则需要指定每个项目的属性:
let advSearchViewAddLeadingConstraint: NSLayoutConstraint =
NSLayoutConstraint(
item:advancedSearchView,
attribute:NSLayoutAttribute.Leading,
relatedBy:NSLayoutRelation.Equal,
toItem:self.view,
attribute:NSLayoutAttribute.Leading,
multiplier:0,
constant:200)
其他几点说明:
您可以使用以下内容激活约束:advSearchViewAddLeadingConstraint.active = true
在Swift中,类型推断可以帮助您使用枚举类型,因此您只需键入NSLayoutAttribute.Leading
而不是键入Leading
。