[self.view.constraints enumerateObjectsUsingBlock:^(NSLayoutConstraint *constraint, NSUInteger idx, BOOL *stop) {
if ((constraint.firstItem == view) && (constraint.firstAttribute == NSLayoutAttributeTop)) {
constraint.constant = -200;
}
}];
在Objective-C中,我可以枚举一个视图的约束并相应地调整约束,但是在Swift中我很难找到相应的。
这是我尝试在swift中应用代码:
for (index, value) in enumerate(view.constraints()) {
var constraint = value as NSLayoutConstraint
if value.firstItem? = view {
constraint.constant = -200;
}
}
我收到一个编译错误,声明"键入' [AnyObject!'不符合协议'序列'在此代码的第一行。
任何帮助将不胜感激!
答案 0 :(得分:2)
由于constraints()
返回[AnyObject]!
这是可选的,因此您需要在使用前解包view.constraints()!
。因此请解包使用以下代码
for (index, value) in enumerate(view.constraints()!) {
var constraint = value as NSLayoutConstraint
if value.firstItem? = view {
constraint.constant = -200;
}
}
另外你不能指定firstItem
,因为它只是readonly属性。我想你要比较它。所以使用if value.firstItem! as UIView == self.view
。所以使用`
for (index, value) in enumerate(view.constraints()!) {
var constraint = value as NSLayoutConstraint
if value.firstItem! as UIView == self.view {
constraint.constant = -200;
}
}